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

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

마방진

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

요약
각 행과 열에 하나씩 있는 n개의 빈칸을 채워 모든 행과 열, 두 대각선의 합이 같아지도록 합니다.
난이도

보통10점 중 6점

유형
수학, 행렬
정답자
아직 제출이 없습니다

문제

n×nn \times n 크기의 표에 서로 다른 양의 정수 n2n^2개가 채워져 있고, 모든 행, 모든 열, 그리고 두 대각선의 수의 합이 모두 같을 때, 이 표를 마방진이라고 부른다. 예를 들어 아래 표는 각 행, 각 열, 두 대각선의 합이 모두 1515인 마방진이다.

2 7 6
9 5 1
4 3 8

오래된 마방진 가운데 일부는 훼손되어, 정확히 nn개의 칸에 적힌 수가 지워져 있다. 지워진 칸들은 어느 두 칸도 같은 행이나 같은 열에 있지 않다. 즉 모든 행과 모든 열에서 정확히 한 칸씩 지워져 있다. 이렇게 훼손된 표가 주어질 때, 지워진 칸을 다시 채워 표가 마방진이 되도록 복원하여라.

입력

첫째 줄에 마방진의 크기 nn (2≤n≤10002 \le n \le 1000)이 주어진다. 이어지는 nn개의 줄에는 각각 nn개의 정수 aija_{ij} (0≤aij≤1090 \le a_{ij} \le 10^9)가 공백 하나로 구분되어 주어지며, ii번째 줄은 표의 ii번째 행을 나타낸다. 양수 aija_{ij}는 그 칸에 적힌 값이고, 00은 값이 지워진 칸을 나타낸다. 지워진 칸은 모두 nn개이며, 각 행과 각 열에 정확히 하나씩 있다.

출력

복원한 마방진을 nn개의 줄에 출력한다. 각 줄에는 nn개의 양의 정수를 공백 하나로 구분하여 출력하며, 각 수는 101810^{18} 이하이다. 입력은 항상 마방진으로 복원할 수 있고, 그 복원 결과가 유일하게 정해지도록 주어진다. 따라서 올바른 표는 정확히 하나 존재한다.

예제2

  1. 예제 1

    입력
    4
    0 35 34 4
    32 0 7 29
    8 30 31 0
    33 3 0 36
    
    예상 출력
    1 35 34 4
    32 6 7 29
    8 30 31 5
    33 3 2 36
    
  2. 예제 2

    입력
    3
    0 1 6
    3 0 7
    4 9 0
    
    예상 출력
    8 1 6
    3 5 7
    4 9 2