상자 퍼즐

시간 제한2초메모리 제한128 MB

문제

$n^2$개의 정육면체 상자가 있다. 각 상자의 윗면과 네 옆면에는 정수가 적혀 있다. 이 상자들을 $n \times n$ 격자에 하나씩 놓아 퍼즐을 완성해야 한다.

조건은 다음과 같다.

  1. 상자는 바닥과 평행하게만 돌릴 수 있다. 따라서 윗면은 항상 위를 향한다.
  2. 배치가 끝나면 서로 맞닿은 두 옆면의 숫자가 같아야 한다.
  3. 격자 바깥을 향하는 옆면의 숫자는 0이어야 한다.

아래 그림은 조건을 만족하는 배치를 보여 준다.

동그라미 안의 숫자는 상자의 윗면에 적힌 수이고, 그 둘레의 숫자는 네 옆면에 적힌 수이다. 그림처럼 9개의 상자를 놓으면 모든 조건을 만족한다.

각 상자의 숫자가 주어질 때, 조건을 만족하도록 상자를 배치하고 각 상자의 회전 횟수를 구하시오.

입력

첫째 줄에 $n$이 주어진다. $(2 \le n \le 5)$

둘째 줄부터 $n^2$개의 줄에 걸쳐 한 줄에 한 상자의 정보가 주어진다. 각 줄의 첫 번째 수는 윗면에 적힌 정수이고, 이어지는 네 수는 위에서 보았을 때 네 옆면에 적힌 정수를 시계방향 순서로 나열한 것이다.

윗면에 적힌 정수는 $n^2$ 이하의 자연수이며 서로 모두 다르다. 옆면에 적힌 정수는 9 이하의 음이 아닌 정수이다. 입력은 항상 조건을 만족하는 배치가 존재하는 경우만 주어진다.

출력

먼저 상자의 윗면에 적힌 정수들을 $n \times n$ 행렬 형태로 출력한다.

이어서 각 상자가 입력으로 주어진 상태에서 시계방향으로 몇 번 회전했는지를 나타내는 정수를 $n \times n$ 행렬 형태로 출력한다. 회전 횟수는 0 이상 3 이하이다.