Problem Statement 
 Making a crop circle is a difficult job because it is hard to see what one is doing. You have found a farm with boulders scattered around, and have realised that it would be easiest to use a circle that passes through three or more of the boulders.
You have started wondering how many different circles you could produce in this way. Given int[] x and int[] y, return the number of distinct circles that can be made. The boulders are at (x[0], y[0]), (x[1], y[1]), etc. 

Definition 
 Class:  CropCircles  Method:  countCircles  Parameters:  int[], int[]  Returns:  int  Method signature:  int countCircles(int[] x, int[] y)  (be sure your method is public) 




Notes 
  The field is large enough that a circle can be made through any three boulders that do not lie in a straight line. 
  When four or more boulders lie on the same circle, this circle should still only be counted once. 

Constraints 
  x and y will each contain between 1 and 50 elements, inclusive. 
  x and y will contain the same number of elements. 
  Each element of x and y will be between 0 and 500, inclusive. 
  No two boulders will be in the same location. 

Examples 
0)  
 {1, 2, 1, 2, 8}
 {2, 1, 8, 9, 9}

 Returns: 1  The five points all lie on a common circle. 


1)  
  Returns: 0  The three points lie on a single line, so there is no circle that passes through them. 


2)  
 {0, 10, 10, 10, 20}  {10, 0, 10, 20, 10} 
 Returns: 5  

3)  
 {0, 10, 11, 10, 21}  {10, 0, 11, 20, 10} 
 Returns: 10  
