어떤 3차원 도형이 볼록(convex)하다는 것은, 도형 내부의 임의의 두 점을 잇는 선분이 항상 그 도형 안에 완전히 포함된다는 뜻이다. 3차원 공간의 점 집합 X에 대해, X의 볼록 껍질(convex hull)은 X의 모든 점을 포함하는 가장 작은 볼록 도형이다.
예를 들어 X={(0,0,0), (10,0,0), (0,10,0), (0,0,10)}이라고 하자. X의 볼록 껍질은 X의 네 점을 꼭짓점으로 하는 사면체이다. 이 사면체는 점 (1,1,1)을 포함하므로, (1,1,1)을 X에 추가해도 볼록 껍질은 변하지 않는다.
X가 주어질 때, 그 볼록 껍질의 표면적을 구하여 가장 가까운 정수로 반올림한 값을 구하라.
참고: 볼록 껍질의 모든 면은 다각형이다. 이 문제에서는 볼록 껍질의 한 면 위에 놓이는 X의 점이 최대 3개라고 가정해도 된다(즉, 모든 면은 삼각형이다).
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 점의 개수를 나타내는 정수 n (4≤n≤25)으로 시작한다. 이어지는 n개의 줄에는 각각 한 점의 x, y, z 좌표를 나타내는 정수 세 개가 주어진다. 모든 좌표는 −100≤x,y,z≤100을 만족한다.
입력의 끝은 n=0인 줄로 표시되며, 이 케이스는 처리하지 않는다.
각 테스트 케이스마다 볼록 껍질의 표면적을 가장 가까운 정수로 반올림하여 한 줄에 출력한다(예: 2.499는 2로, 2.5는 3으로 반올림된다).
반올림 오차로 인한 모호함을 피하기 위해, 모든 정답은 반올림 경계에서 최소 0.001 이상 떨어지도록 테스트 데이터가 구성되어 있다(예를 들어 표면적이 정확히 2.4997인 경우는 없다).