시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB112220.000%

문제

윗면과 네 개의 옆면, 총 다섯 개의 면에 정수가 적힌 정육면체 모양의 상자가 n2개가 있다. 이 상자들을 n행 n열로 배열하는 퍼즐 문제를 풀어보자. 단 다음의 조건을 만족해야 한다.

  1. 상자는 지면에 평행하게 회전시킬 수 있다. 즉, 윗면은 언제나 천장을 바라보고 있는 상태여야 한다.
  2. 상자의 배열이 끝난 후, 서로 인접한 두 상자의 인접한 면에 적힌 수는 같아야 한다.
  3. 다른 상자와 인접해 있지 않은 면에 적힌 수는 0이어야 한다.

다음과 같은 예를 들어 보자.

동그라미 안에 적힌 것은 상자의 윗면에 적힌 숫자이고, 그 둘레에 적힌 것이 상자의 네 옆면에 적힌 숫자이다. 9개의 상자를 위와 같이 배열하면, 조건에 맞게 퍼즐을 푼 것이다.

각 상자에 적힌 숫자들이 주어졌을 때 위와 같이 퍼즐을 푸는 프로그램을 작성하시오.

입력

첫째 줄에 n이 주어진다. (2 ≤ n ≤ 5)  둘째 줄부터 한 줄에 한 개씩 상자의 정보가 주어진다. 맨 처음 수는 윗면에 적힌 정수이고, 나머지 네 개의 수는 옆면에 적힌 정수를 위에서 보았을 때의 시계방향으로 나열한 것이다.

윗면에 적힌 정수는 n2보다 작거나 같은 자연수이고 중복되지 않는다. 옆면에 적힌 정수는 9보다 작거나 같은 음이 아닌 정수이다. 항상 풀 수 있는 퍼즐만 입력으로 주어진다.

출력

먼저, 상자 윗면에 적힌 정수를 행렬로 만들어 출력한다. 이어서, 각각의 상자에 대해 주어진 상태에서 시계방향으로 몇 번의 회전을 거쳤는지 0 이상 3 이하의 정수로 나타낸 것을 행렬로 만들어 출력한다.

예제 입력 1

3
1 3 6 2 0
2 5 0 0 2
3 0 4 3 0
4 0 8 5 4
5 2 4 0 0
6 5 6 9 6
7 0 0 3 8
8 9 2 0 4
9 3 0 5 6

예제 출력 1

3 4 7
1 6 9
5 8 2
0 0 0
0 0 0
0 0 0

출처