적당한 휴식은 필수

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

요약
N행 N열 격자를 0 이상 10000 이하의 정수로 채워 2N개 행·열 합의 mex가 최대가 되도록 만든다.
난이도

보통10점 중 6점

유형
수학, 그리디, 구현, 배열
정답자
아직 제출이 없습니다

문제

bnb2011은 너무 똑똑하다. 그래서 매일 주변 사람들이 퍼즐을 던진다. 오늘 bnb2011이 받은 퍼즐의 내용은 다음과 같다.

NN행 NN열의 격자가 주어진다. 당신은 격자의 N2N^2개의 칸에 00 이상, 10,00010\\,000 이하의 정수를 중복을 허용하여 자유롭게 채울 수 있다. 모든 칸에 정수를 채운 뒤, 격자의 ii번째 행에 적힌 수들의 합을 R_iR\_i, jj번째 열에 적힌 수들의 합을 C_jC\_j라고 하자. 이때, mex⁡(R_1,R_2,⋯ ,R_N,C_1,C_2,⋯ ,C_N)\operatorname{mex} (\\{R\_1, R\_2, \cdots, R\_N, C\_1, C\_2, \cdots, C\_N\\})이 최대가 되도록 격자를 구성해 보자. mex⁡(S)\operatorname{mex} (S)는 집합 SS에 포함되지 않은 가장 작은 음이 아닌 정수로 정의한다.

bnb2011은 적당한 휴식을 취하려고 했지만, 퍼즐이 계속 눈에 아른거려 쉬지 못하고 있다. bnb2011이 휴식을 취할 수 있도록 퍼즐을 해결해 보자.

입력

첫째 줄에 격자의 한 변의 길이를 나타내는 정수 NN이 주어진다. (1≤N≤2,000)(1 \le N \le 2\\,000)

출력

NN개의 줄에 걸쳐 각 줄에 NN개의 정수를 출력한다. ii번째 줄에서 jj번째로 출력되는 정수는 격자의 ii행 jj열에 적힌 정수를 의미한다. 답으로 가능한 격자가 여러 가지 존재한다면, 그중 하나를 출력하면 된다.

예제1

  1. 예제 1

    입력
    4
    
    예상 출력
    0 2 0 0
    1 0 2 4
    0 0 0 0
    0 4 1 0