만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

자기회전 부분집합 세기

시간 제한2초메모리 제한512 MB

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

어려움10점 중 8점

유형
기하, 조합론
정답자
아직 제출이 없습니다

문제

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

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

입력

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

다음 NN개의 줄에는 각 점의 좌표를 나타내는 두 정수 XX와 YY가 공백으로 구분되어 주어진다 (−109≤X,Y≤109-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로 나눈 나머지를 출력한다.

예제4

  1. 예제 1

    입력
    3
    1 1
    2 2
    1 0
    
    예상 출력
    3 3 0
    
  2. 예제 2

    입력
    7
    -2 0
    -1 1
    0 2
    0 0
    2 0
    1 -1
    0 -2
    
    예상 출력
    7 21 5 5 3 1 1
    
  3. 예제 3

    입력
    1
    -1000000000 1000000000
    
    예상 출력
    1
    
  4. 예제 4

    입력
    4
    0 0
    1 0
    1 1
    0 1
    
    예상 출력
    4 6 0 1