만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

표 압축

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

요약
n행 m열 표의 각 값을 양의 정수로 바꾸되, 행과 열 안에서의 대소 관계와 같음을 유지하고 가장 큰 값이 최소가 되도록 만듭니다.
난이도

보통10점 중 6점

유형
정렬, 유니온 파인드, 그리디
정답자
아직 제출이 없습니다

문제

어린 페탸는 데이터 압축 알고리즘을 좋아한다. 그는 gz, bz, zip 등 여러 알고리즘을 이미 공부했고, 그 지식을 바탕으로 dis라는 새 압축 알고리즘을 개발하고 있다.

페탸는 표를 압축하기로 했다. 양의 정수로 채워진 nn행 mm열 표 aa가 주어진다. 각 행과 각 열에서 원소들의 상대적 순서가 그대로 유지되도록 양의 정수로 이루어진 표 a′a'를 만들어야 한다. 즉, 어떤 행 ii에서 ai,j<ai,ka_{i,j} < a_{i,k}이면 ai,j′<ai,k′a'_{i,j} < a'_{i,k}이고, ai,j=ai,ka_{i,j} = a_{i,k}이면 ai,j′=ai,k′a'_{i,j} = a'_{i,k}이다. 열에 대해서도 같다. 어떤 열 jj에서 ai,j<ap,ja_{i,j} < a_{p,j}이면 ai,j′<ap,j′a'_{i,j} < a'_{p,j}이고, ai,j=ap,ja_{i,j} = a_{p,j}이면 ai,j′=ap,j′a'_{i,j} = a'_{p,j}이다.

값이 클수록 저장에 더 많은 공간이 필요하므로, a′a'의 최댓값은 가능한 한 작아야 한다.

입력

첫 줄에 표의 행 수 nn과 열 수 mm이 주어진다 (1≤n,m1 \le n, m이고 n⋅m≤1 000 000n \cdot m \le 1\,000\,000).

이어지는 nn개의 줄에는 각각 mm개의 정수 ai,ja_{i,j} (1≤ai,j≤1091 \le a_{i,j} \le 10^{9})가 주어진다. 표의 값이다.

출력

압축된 표를 nn개의 줄로 출력하며, 각 줄에는 mm개의 정수를 출력한다.

압축된 표의 최댓값을 최소로 만드는 답이 여럿이면 그중 아무거나 출력해도 된다.

힌트

첫 번째 샘플에서 a1,2≠a2,1a_{1,2} \ne a_{2,1}이다. 두 원소는 같은 행이나 같은 열에 있지 않으므로 압축 후에 같은 값이 될 수 있다.

예제2

  1. 예제 1

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

    입력
    4 3
    20 10 30
    50 40 30
    50 60 70
    90 80 70
    
    예상 출력
    2 1 3
    5 4 3
    5 6 7
    9 8 7