import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;

public class fun_dg {

	public static void main(String[] args) {
		new Thread(){
			public void run() {
				try {
					new fun_dg().run();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}.start();
	}
	
	final int maxN = 1000;
	final int maxCoordinates = 10000;
	
	//needs 2 <= n

	protected void run() throws IOException {
		Scanner in = new Scanner(new File("fun.in"));
		PrintWriter out = new PrintWriter("fun.out");
		
		int n = in.nextInt();
		assert n >= 2 && n <= maxN : "Wrong n";
		long[] x = new long[n];
		long[] y = new long[n];
		for (int i = 0; i < n; i++) {
			x[i] = in.nextLong();
			y[i] = in.nextLong();
			assert Math.abs(x[i]) <= maxCoordinates && Math.abs(y[i]) <= maxCoordinates : "Point " + i + " has wrong coordinates";
		}

		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j < n; j++) {
				assert x[i] != x[j] || y[i] != y[j] : "Points " + i + " and " + j + " are equal";
			}
		}
		
		long[] d = new long[n - 1];
		for (int i = 1; i < n; i++) {
			d[i - 1] = sqDist(x[0], y[0], x[i], y[i]);
		}
		Arrays.sort(d);
		int goodCount = n - 1;
		
		long[] cur = new long[n - 1];
		for (int i = 1; i < n; i++) {
			int count = 0;
			for (int j = 0; j < n; j++) {
				if (i != j) {
					cur[count++] = sqDist(x[i], y[i], x[j], y[j]);
				}
			}
			Arrays.sort(cur);
			int p = 0;
			int newGood = 0;
			for (int j = 0; j < goodCount; j++) {
				while (p < cur.length && cur[p] < d[j]) {
					p++;
				}
				if (p < cur.length && cur[p] == d[j]) {
					d[newGood++] = d[j];
				}
			}
			goodCount = newGood;
		}
		
		assert goodCount > 0 : "Solution does not exist";
		int newGood = 1;
		for (int i = 1; i < goodCount; i++) {
			if (d[i] != d[newGood - 1]) {
				d[newGood++] = d[i];
			}
		}
		
		out.println(newGood);
		for (int i = 0; i < newGood; i++) {
			out.println(Math.sqrt(d[i]));
		}
		
		assert !in.hasNext() : "Extra information";
		
		in.close();
		out.close();
	}

	private long sqDist(long x1, long y1, long x2, long y2) {
		return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
	}

}
