인접한 변
시간 제한1초메모리 제한128 MB
여러 삼각형 메시를 읽고 각 꼭짓점에 처음 나타난 순서로 번호를 붙인 뒤, 각 삼각형의 세 변에 대해 그 변을 공유하는 이웃 삼각형의 나머지 꼭짓점을 출력하고 이웃이 없으면 X를 출력한다.
문제
삼각형의 인접 관계는 컴퓨터 그래픽스에서 자주 등장하는 문제입니다. 모델링 소프트웨어는 3차원 모델을 삼각형의 목록으로 출력하는 경우가 많습니다. 예를 들어 아래 그림의 정사면체는 삼각형 모양의 면 4개로 이루어져 있습니다. 각 삼각형은 세 꼭짓점의 좌표로 표현되며, 입체를 바로 바깥에서 바라보는 관찰자의 시점에서 시계 방향 순서로 나열됩니다. 정확한 파일 형식은 아래 입력 부분에서 설명합니다.

이 표현만으로도 많은 용도에는 충분하지만, 일부 그래픽스 알고리즘은 어떤 삼각형들이 서로 인접해 있는지, 즉 어떤 삼각형들이 변을 공유하는지 알아야 합니다. 여기서 여러분이 할 일은 주어진 각 모델에 대해 이 정보를 계산하는 것입니다. 인접한 삼각형을 계산하는 과정을 통해, 모든 삼각형의 모든 변이 다른 삼각형의 변 하나와 정확히 짝을 이루는지 확인할 수도 있습니다. 이는 모델이 빈틈이나 구멍 없이 완전히 닫힌 껍질을 이루는지 검사하는 한 가지 방법입니다.

모델의 어떤 면이든 최대 세 개의 인접 삼각형을 가질 수 있으며, 각각과 변 하나씩을 공유합니다. 올바르게 구성된 모델에서 모든 변은 정확히 두 삼각형에 나타나며, 공유되는 변의 두 끝점은 두 삼각형 각각을 시계 방향으로 돌 때 서로 반대 순서로 나타납니다.
꼭짓점이 입력에 주어진 순서대로 , , 인 삼각형을 생각해 봅시다. 이 삼각형의 세 변은 , , 입니다. 변을 공유하는 삼각형의 나머지 꼭짓점을 , 변을 공유하는 삼각형의 나머지 꼭짓점을 , 변을 공유하는 삼각형의 나머지 꼭짓점을 라고 합시다. 각 삼각형에 대해 를 출력합니다. 어떤 변을 따라 이웃한 삼각형이 없으면, 그 꼭짓점 번호 자리에 대문자 X를 출력합니다.
입력
입력에는 여러 개의 3차원 모델이 들어 있습니다. 각 모델의 첫 줄은 정수 () 하나로, 그 모델에 있는 삼각형의 개수입니다. 이어서 개의 줄이 나오는데(삼각형 하나당 세 줄), 각 줄에는 한 꼭짓점의 , , 좌표가 쉼표와 공백으로 구분되어 주어집니다. 각 삼각형의 세 꼭짓점은 시계 방향 순서로 나열됩니다.
좌표는 지수 표기를 포함한 부동소수점 값일 수 있으므로 정수라고 가정해서는 안 됩니다. 같은 꼭짓점이 여러 번 나타날 때는 항상 완전히 동일한 문자열로 적혀 있으며, 서로 다른 두 꼭짓점은 단정밀도(32비트) 부동소수점으로 나타냈을 때 서로 다르다는 것이 보장됩니다. 모든 좌표는 이상 이하의 범위에 있습니다.
입력은 자리에 0 하나만 있는 줄로 끝납니다.
출력
각 모델 안에서, 서로 다른 꼭짓점에 그 모델의 입력에 처음 등장하는 순서대로 번부터(, 그다음 , , , …) 번호를 매깁니다. 출력에는 좌표 값 대신 이 꼭짓점 번호를 사용하며, 번호 매기기는 모델마다 다시 부터 시작합니다.
모델은 읽은 순서대로 출력합니다. 연속한 두 모델 사이는 빈 줄 하나로 구분하되, 첫 모델 앞이나 마지막 모델 뒤에는 빈 줄을 출력하지 않습니다. 각 모델에 대해 삼각형 하나당 한 줄씩(총 줄), 삼각형을 읽은 순서 그대로 출력합니다.
각 삼각형 줄의 형식은 다음과 같습니다.
i: V0 V1 V2 V3 V4 V5
여기서 는 삼각형의 번호()이며 그 뒤에 콜론과 공백이 옵니다. 는 그 삼각형 자신의 꼭짓점 번호를 입력 순서대로 나열한 것이고, 는 각각 변 , , 을 따라 인접한 삼각형의 나머지 꼭짓점입니다. 이웃이 없는 경우에는 대문자 X를 출력합니다. 한 줄 안의 모든 값은 공백 하나로 구분합니다.