import java.io.File; import java.io.IOException; import java.util.Scanner; public class pizza { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(new File("pizza.in")); int datasets = sc.nextInt(); // sc.nextLine(); for(int i = 0; i < datasets; i++) { int N = sc.nextInt(); double angle[] = new double[N]; for(int j = 0; j < N; j++) { double a = sc.nextFloat(); double r = sc.nextFloat(); angle[j] = a; } sort(angle); boolean done = false; for(int n = N; !done && n > 1; n--) { if(N % n == 0) { double slice_size = 2.0 * Math.PI / ((double)n); for(int index = 0; !done && index < N; index++) { boolean index_good = true; for(int slice = 0; index_good && slice < n; slice++) { double lb = angle[index] + slice_size * slice; double ub = lb + slice_size; while(ub > 2 * Math.PI) ub -= 2 * Math.PI; while(lb > 2 * Math.PI) lb -= 2 * Math.PI; for(int nugs = 0; nugs < N / n; nugs++) { int curr = (index + slice * N / n + nugs) % N; if(lb < ub && (angle[curr] < lb || angle[curr] >= ub)) index_good = false; else if(ub < lb && !(angle[curr] < ub || angle[curr] >= lb)) index_good = false; } } if(index_good == true) { System.out.println("Data Set " + (i+1) + ": " + n + " slices\n"); done = true; } } } } if(!done) System.out.println("Data Set " + (i+1) + ": 1 slices\n"); } } public static void sort(double arr[]) { for(int x = 0; x < arr.length; x++) { int best = 0; for(int y = x+1; y < arr.length; y++) { if(arr[x] > arr[y]) { double temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } } }