자기회전 부분집합 세기

주어진 N개의 점에서 자명하지 않은 회전에 대해 자기 자신으로 대응되는 부분집합을 크기별로 세어 1e9+7로 나눈 나머지를 구한다.

어려움8기하조합론아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

평면 위의 점 집합이 자기회전 집합이라는 것은, 어떤 점 PP0<α<3600 < \alpha < 360을 만족하는 각도 α\alpha(단위는 도)가 존재해서 PP를 중심으로 평면을 α\alpha만큼 회전하면 집합의 모든 점이 다시 이 집합에 속하는 점으로 옮겨진다는 뜻이다. 이때 PP를 회전의 중심이라고 부른다.

좌표가 모두 정수인 서로 다른 점 NN개로 이루어진 집합이 주어진다. 크기가 1,2,,N1, 2, \dots, N인 부분집합 가운데 자기회전 집합인 것이 각각 몇 개인지 구하여라. 어느 한쪽에만 들어 있는 점이 하나라도 있으면 두 부분집합은 서로 다르다.

입력

첫째 줄에 점의 개수 NN이 주어진다 (1N10001 \le N \le 1000).

다음 NN개의 줄에는 각 점의 좌표를 나타내는 두 정수 XXYY가 공백으로 구분되어 주어진다 (109X,Y109-10^9 \le X, Y \le 10^9). 주어지는 NN개의 점은 모두 다르다.

출력

첫째 줄에 NN개의 정수 S1,S2,,SNS_1, S_2, \dots, S_N을 공백 하나로 구분해 출력한다. SiS_i는 점을 정확히 ii개 포함하는 자기회전 부분집합의 개수이다. 이 개수가 매우 클 수 있으므로 각각을 109+710^9 + 7로 나눈 나머지를 출력한다.