만드는 중입니다

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

가지 소환 마법

시간 제한4초메모리 제한1024 MB

요약
N개의 3차원 정수 점에서 보존 변환으로 정다각형이 되는 M개의 점을 골라, N과 M의 곱이 최대가 되는 값을 구합니다.
난이도

어려움10점 중 8점

유형
기하, 수학, 완전 탐색
정답자
아직 제출이 없습니다

문제

한국가지협회는 질 좋은 가지를 저렴한 가격에 공급하기 위해 여러 방면으로 연구하고 있습니다. 가지 소환 마법은 최근 개발된 방법으로, 적은 수의 가지를 제물로 바쳐 수많은 가지를 소환하는 마법입니다.

가지 소환 마법을 사용하려면 NN개의 가지를 공중에 띄우고 주문을 외워야 합니다. 가지의 위치를 3차원 좌표공간 위의 점으로 나타내고, 각 점에 적당한 함수 f(P)f(P)를 적용합니다. 함수 f(P)f(P)는 다음 조건을 만족해야 합니다.

  • f(P)f(P)의 정의역과 공역은 각 좌표가 모두 유리수인 점 (x,y,z)(x, y, z)의 집합입니다.
  • 서로 다른 두 점 AA, BB를 고르면 f(A)f(A)와 f(B)f(B)는 서로 다릅니다.
  • 서로 다른 세 점 AA, BB, CC가 한 직선 위에 있는 것과 f(A)f(A), f(B)f(B), f(C)f(C)가 한 직선 위에 있는 것은 동치입니다.
  • 서로 다른 두 점 AA, BB와 서로 다른 두 점 CC, DD에 대해, 직선 AB↔\overleftrightarrow{AB}와 직선 CD↔\overleftrightarrow{CD}가 평행한 것은 직선 f(A)f(B)↔\overleftrightarrow{f(A)f(B)}와 직선 f(C)f(D)↔\overleftrightarrow{f(C)f(D)}가 평행한 것과 동치입니다. AB↔=CD↔\overleftrightarrow{AB} = \overleftrightarrow{CD}이면 직선 AB↔\overleftrightarrow{AB}와 직선 CD↔\overleftrightarrow{CD}는 평행합니다.

NN개의 모든 점에 f(P)f(P)를 적용한 뒤, MM개의 점을 꼭짓점으로 하는 다각형이 정MM각형이 되도록 NN개의 점 중에서 적당한 MM개의 점을 고르면 N×MN \times M개의 가지를 소환할 수 있습니다. (M≥3M \ge 3) 단, 적당한 f(P)f(P)를 찾지 못하거나 적당한 MM개의 점을 고르지 못하면 소환이 실패합니다. 가지의 위치를 나타내는 NN개의 점이 주어질 때, 적절한 함수 f(P)f(P)와 MM개의 점을 단 한 번 골라 최대 몇 개의 가지를 소환할 수 있는지 알아내 봅시다.

입력

첫 번째 줄에 가지의 수 NN이 주어집니다. (3≤N≤5003 \le N \le 500)

다음 NN개 줄에 각각 가지의 위치를 나타내는 점의 좌표가 주어집니다. ii번째 줄에는 ii번째 가지의 위치를 나타내는 점의 좌표 (xi,yi,zi)(x_i, y_i, z_i)를 나타내는 정수 xix_i, yiy_i, ziz_i가 공백으로 구분되어 주어집니다. (0≤xi,yi,zi≤1080 \le x_i, y_i, z_i \le 10^8)

모든 가지의 위치는 서로 다릅니다.

출력

첫 번째 줄에 적당한 함수 f(P)f(P)와 적당한 MM개의 점을 단 한 번 골라 최대 몇 개의 가지를 소환할 수 있는지 출력합니다.

예제3

  1. 예제 1

    입력
    4
    0 0 0
    1 0 0
    0 1 0
    0 0 1
    
    예상 출력
    12
    
  2. 예제 2

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

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