小 A 有一个 n 行 m 列格子组成的二维网格,从上到下依次是第 1 行到第 n 行,从左到右依次是第 1 列到第 m 列。每个格子里有一个数字,第 i 行第 j 列的格子里的数字是 a_{i,j}。
小 A 想让二维网格变得有序,因此他先对每一行从左到右按升序排序,再对每一列从上到下按升序排序。以下是一个先完成行排序再完成列排序的例子:
| 1 | 3 | 2 | 5 |
| 6 | 2 | 4 | 4 |
| 5 | 4 | 1 | 3 |
每行升序排序
| 1 | 2 | 3 | 5 |
| 2 | 4 | 4 | 6 |
| 1 | 3 | 4 | 5 |
每列升序排序
| 1 | 2 | 3 | 5 |
| 1 | 3 | 4 | 5 |
| 2 | 4 | 4 | 6 |
小 A 想知道二维网格经过以上排序后的结果。你能编写程序帮助他吗?
第一行,两个正整数 n,m,分别二维网格的行数与列数。
接下来 n 行,每行 m 个整数 a_{i,1},\ldots,a_{i,m},表示二维网格种的数字。
输出 n 行,每行 m 个整数,表示二维网格先完成行排序再完成列排序后的结果。
3 2 6 5 4 3 2 1
1 2 3 4 5 6
3 4 1 3 2 5 6 2 4 4 5 4 1 3
1 2 3 5 1 3 4 5 2 4 4 6
对于所有测试点,保证 2 \le n \le 10,2 \le m \le 10,1 \le a_{i,j} \le 100。