spiral123

아직 제출이 없습니다시간 제한1초메모리 제한64 MB

문제

다음 세 조건을 모두 만족하는 정사각 행렬을 spiral123 행렬이라고 한다.

  • 모든 원소는 0, 1, 2, 3 중 하나다.
  • 각 행과 각 열은 1, 2, 3을 정확히 한 번씩 담고 나머지 칸은 모두 0이다.
  • 왼쪽 위 칸에서 출발해 첫 행을 오른쪽으로 따라간 뒤 아래, 왼쪽, 위로 방향을 바꾸며 안쪽으로 감아 들어가는 나선을 따라 원소를 읽는다. 0을 빼고 남은 값은 1, 2, 3, 1, 2, 3 순서로 이어지고 마지막 값은 3이다.

같은 $n$에 대해 $n \times n$ spiral123 행렬은 여러 개 있으므로 출력에서 그중 하나를 정해 둔다. $n$이 주어지면 그 행렬을 출력한다.

입력

첫째 줄에 정수 $n$이 주어진다.

출력

$n$개의 줄을 출력한다. $i$번째 줄에는 아래에서 정의하는 행렬 $M(n)$의 $i$행을 $n$개의 수로, 공백 하나씩 두고 출력한다. 행과 열의 번호는 $0$부터 센다.

$5 \le n \le 10$이면 $M(n)$은 아래 표와 같다. 각 표는 한 칸을 숫자 한 글자로 적고 한 줄이 행렬의 한 행이다.

$M(5)$

12003
30120
20031
03210
01302

$M(6)$

123000
301020
000231
010302
032100
200013

$M(7)$

1230000
3010020
0000231
0103002
0021300
0302100
2000013

$M(8)$

12300000
30100020
00200031
00010302
00032100
01003200
03021000
20000013

$M(9)$

000000123
200000031
120003000
003100002
012030000
031002000
000321000
300000210
000210300

$M(10)$

0012300000
0003120000
0020000031
0000000312
0000231000
0000002103
2000013000
0130000200
1300000020
3201000000

$n \ge 11$이면 $M(n-6)$에서 $M(n)$을 만든다. $r = (0, 1, 2, n-3, n-2, n-1)$이라고 하자. 모든 칸이 $0$인 $n \times n$ 행렬에서 시작한다. $0$ 이상 $5$ 이하인 모든 $i$, $j$에 대해 $M(6)$의 $i$행 $j$열 값을 $r_i$행 $r_j$열에 넣는다. 이어서 $0$ 이상 $n-7$ 이하인 모든 $i$, $j$에 대해 $M(n-6)$의 $i$행 $j$열 값을 $i+3$행 $j+3$열에 넣는다. 나머지 칸은 $0$으로 둔다.

입력 범위의 모든 $n$에서 $M(n)$은 spiral123 행렬이다.

제한

  • $5 \le n \le 200$