#TEST1045. 数据压缩

数据压缩

Description

yy 现在对数据压缩算法情有独钟。她已经学习了 gzgzbzbzzipzip 算法和许多其他算法。受新知识的启发,小yy 正在开发新的压缩算法,并将其命名为 disdis

yy 决定压缩表格。她得到了一个由 nn 行和 mm 列组成的表 aa,该表填充的是正整数。她想建立一个由正整数组成的表 aa',使每行和每列中元素的相对顺序保持不变。也就是说,如果初始表的某一行 ii 中有 ai,j<ai,ka_{i,j} < a_{i,k},那么生成表中就有 ai,j<ai,ka'_{i,j} < a'_{i,k},如果有 ai,j=ai,ka_{i,j} = a_{i,k},那么生成表中就有 ai,j=ai,ka'_{i,j} = a'_{i,k}。同样,如果初始表的某列 jj 中有 ai,j<ap,ja_{i,j} < a_{p,j} ,那么压缩表中有 ai,j<ap,ja'_{i,j} < a'_{p,j},如果有 ai,j=ap,ja_{i,j} = a_{p,j},那么有 ai,j=ap,ja'_{i,j} = a'_{p,j}

由于大值需要更多空间来存储,因此 aa' 中的最大值应尽可能小。

yy 的理论很好,但她需要你的帮助来实现算法。

Format

Input

输入的第一行包含两个整数 nnmm1n,m1 \le n, mn×m1000000n \times m \le 1\,000\,000),分别是表格的行数和列数。
接下来 nn 行,每行包含 mm 个整数 ai,ja_{i,j}1ai,j1091 \le a_{i,j} \le 10^9),表示表格中的值。

Output

nn 行的形式输出压缩表,每行包含 mm 个整数。 如果存在多个答案,而压缩表中的最大数字是可能的最小值,则允许输出其中任何一个答案。

Samples

2 2
1 2
3 4
1 2
2 3
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