아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

뱀

시간 제한3초메모리 제한512 MB

요약
3행 n열 보드에 일부 적힌 숫자와 이웃 조건을 바탕으로 뱀 번호 전체를 복원합니다.
난이도

어려움10점 중 8점

유형
백트래킹, 그래프, 구현
정답자
아직 제출이 없습니다

문제

3×n3 \times n 보드를 뱀이 빈칸 없이 채운다. 뱀의 칸에는 11부터 3n3n까지 번호가 순서대로 붙어 있다. 번호가 연속인 두 칸(11과 22, 22와 33, 33과 44, …\ldots)은 변을 공유한다.

3×93 \times 9 보드는 예를 들어 다음과 같이 채울 수 있다.

일부 칸의 번호는 지워져 있다. 뱀의 배치를 복원하라.

입력

첫째 줄에 보드의 길이 nn (1≤n≤10001 \le n \le 1000)이 주어진다.

다음 세 줄은 보드를 나타낸다. ii번째 줄에는 nn개의 정수 aija_{ij} (0≤aij≤3n0 \le a_{ij} \le 3n, 1≤j≤n1 \le j \le n)가 있다.

aij>0a_{ij} > 0이면 ii행 jj열을 차지하는 뱀 조각의 번호가 aija_{ij}이다. aij=0a_{ij} = 0이면 그 칸의 번호는 주어지지 않는다.

출력

세 줄을 출력한다. ii번째 줄에는 nn개의 양의 정수 bijb_{ij} (1≤j≤n1 \le j \le n)를 공백으로 구분해 출력한다. 모든 bijb_{ij}를 모으면 11부터 3n3n까지의 순열이어야 한다.

출력은 입력에서 양수로 주어진 칸과 같아야 하고, 연속한 번호가 적힌 칸은 변을 공유해야 한다.

복원이 되는 배치는 항상 존재하고, 유일하다.

예제4

  1. 예제 1

    입력
    9
    0 0 5 0 17 0 0 0 21
    8 0 0 3 16 0 0 25 0
    0 0 0 0 0 0 0 0 23
    
    예상 출력
    7 6 5 4 17 18 19 20 21
    8 1 2 3 16 15 26 25 22
    9 10 11 12 13 14 27 24 23
    
  2. 예제 2

    입력
    1
    1
    0
    0
    
    예상 출력
    1
    2
    3
    
  3. 예제 3

    입력
    2
    1 2
    6 3
    5 4
    
    예상 출력
    1 2
    6 3
    5 4
    
  4. 예제 4

    입력
    6
    1 2 0 0 0 6
    14 0 0 17 18 7
    13 0 0 10 0 8
    
    예상 출력
    1 2 3 4 5 6
    14 15 16 17 18 7
    13 12 11 10 9 8