가지 소환 마법
시간 제한4초메모리 제한1024 MB
서로 다른 N개의 3차원 격자점이 주어질 때, 이 중 M개를 평행성과 공선성을 보존하는 함수로 옮겨 정M각형이 되게 하는 최대 M을 구한다.
문제
한국가지협회는 질 좋은 가지를 저렴한 가격에 공급하기 위해 다방면으로 연구하고 있습니다. 가지 소환 마법은 최근에 개발된 방법으로, 적은 수의 가지를 제물로 바쳐 수많은 가지를 소환하는 마법입니다.
가지 소환 마법을 사용하기 위해서는 개의 가지를 공중에 띄우고 주문을 외워야 합니다. 가지의 위치를 3차원 좌표공간 위 점으로 나타냈을 때, 각 점에 적당한 함수 를 찾아 적용합니다. 함수 는 다음 조건을 만족시켜야 합니다.
- 의 정의역과 공역은 각 좌표의 값이 유리수인 모든 점 의 집합입니다.
- 어떤 서로 다른 두 점 , 를 고르더라도 와 는 다릅니다.
- 서로 다른 세 점 , , 가 한 직선 위에 있는 것과, , , 가 한 직선 위에 있는 것은 동치입니다.
- 서로 다른 두 점 , 와 서로 다른 두 점 , 에 대해서 직선 와 직선 가 평행한 것은 직선 와 직선 가 평행한 것과 동치입니다. 이면 직선 와 직선 는 평행합니다.
개의 점에 모두 를 적용한 뒤에, 개의 각 점을 꼭짓점으로 하는 다각형이 정각형이 되도록 개의 점 중 적당한 개의 점을 선택하면 개의 가지를 소환할 수 있습니다. 단, 적당한 를 찾지 못하거나 적당한 개의 점을 선택하지 못한다면 소환이 실패합니다. 개의 가지의 위치를 나타내는 점이 주어질 때, 적절한 함수 와 개의 점을 단 한 번 선택하여 최대 몇 개의 가지를 소환할 수 있는지 알아내 봅시다.
입력
첫 번째 줄에 가지의 수 이 주어집니다.
다음 개 줄 각각에 가지의 위치를 나타내는 점의 좌표가 주어집니다. 그중 번째 줄에는 번째 가지의 위치를 나타내는 점의 좌표 를 나타내는 정수 , , 가 공백으로 구분되어 주어집니다.
모든 가지의 위치는 다릅니다.
출력
첫 번째 줄에 적당한 함수 와 적당한 개의 점을 단 한 번 선택하여 최대 몇 개의 가지를 소환할 수 있는지 출력합니다.