시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
폴리큐브는 모서리 길이가 1인 단위 정육면체들을 면과 면이 맞닿도록 붙여 만든 입체이다. 선이나 꼭짓점으로만 닿는 경우는 폴리큐브가 아니다.
폴리큐브를 이루는 각 정육면체의 중심은 3차원 공간의 정수 좌표에 있다.
주어진 순서대로 정육면체를 하나씩 놓아 폴리큐브를 만든다고 하자. 첫 번째 정육면체는 반드시 (0, 0, 0)에 있어야 한다. 이후의 정육면체는 이전에 놓인 정육면체들 중 적어도 하나와 면을 공유해야 하며, 같은 좌표의 정육면체가 이미 놓여 있으면 안 된다.
주어진 좌표 순서가 폴리큐브를 만들 수 있는 순서인지 판단하라. 만들 수 있다면 완성된 폴리큐브의 겉넓이를 구하라.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. (1 ≤ T ≤ 1,000)
각 테스트 케이스의 첫째 줄에는 정육면체의 개수 P가 주어진다. (1 ≤ P ≤ 100)
그다음에는 정육면체 중심 좌표 P개가 주어진다. 좌표는 x,y,z 형식이며, 한 줄에 최대 8개씩 공백으로 구분되어 주어진다.
입력으로 주어지는 모든 좌표 값은 0 이상 4 이하의 정수이다.
각 테스트 케이스마다 한 줄을 출력한다.
주어진 순서로 폴리큐브를 만들 수 있다면 그 폴리큐브의 겉넓이를 출력한다.
만들 수 없다면 NO k를 출력한다. 여기서 k는 조건을 처음으로 만족하지 못한 정육면체의 번호이다. 첫 번째 정육면체의 번호는 1이다.