spiral123
시간 제한1초메모리 제한64 MB
n이 주어지면 M(n-6)에 고정된 6x6 모서리 패턴을 결합하는 재귀 정의를 따라 n x n spiral123 행렬을 출력한다.
문제
다음 세 조건을 모두 만족하는 정사각 행렬을 spiral123 행렬이라고 한다.
- 모든 원소는 0, 1, 2, 3 중 하나다.
- 각 행과 각 열은 1, 2, 3을 정확히 한 번씩 담고 나머지 칸은 모두 0이다.
- 왼쪽 위 칸에서 출발해 첫 행을 오른쪽으로 따라간 뒤 아래, 왼쪽, 위로 방향을 바꾸며 안쪽으로 감아 들어가는 나선을 따라 원소를 읽는다. 0을 빼고 남은 값은 1, 2, 3, 1, 2, 3 순서로 이어지고 마지막 값은 3이다.

같은 에 대해 spiral123 행렬은 여러 개 있으므로 출력에서 그중 하나를 정해 둔다. 이 주어지면 그 행렬을 출력한다.
입력
첫째 줄에 정수 이 주어진다.
출력
개의 줄을 출력한다. 번째 줄에는 아래에서 정의하는 행렬 의 행을 개의 수로, 공백 하나씩 두고 출력한다. 행과 열의 번호는 부터 센다.
이면 은 아래 표와 같다. 각 표는 한 칸을 숫자 한 글자로 적고 한 줄이 행렬의 한 행이다.
12003
30120
20031
03210
01302
123000
301020
000231
010302
032100
200013
1230000
3010020
0000231
0103002
0021300
0302100
2000013
12300000
30100020
00200031
00010302
00032100
01003200
03021000
20000013
000000123
200000031
120003000
003100002
012030000
031002000
000321000
300000210
000210300
0012300000
0003120000
0020000031
0000000312
0000231000
0000002103
2000013000
0130000200
1300000020
3201000000
이면 에서 을 만든다. 이라고 하자. 모든 칸이 인 행렬에서 시작한다. 이상 이하인 모든 , 에 대해 의 행 열 값을 행 열에 넣는다. 이어서 이상 이하인 모든 , 에 대해 의 행 열 값을 행 열에 넣는다. 나머지 칸은 으로 둔다.
입력 범위의 모든 에서 은 spiral123 행렬이다.