陷阱棋的棋面由n行m列的矩阵组成。在矩阵上的每一格都会有一个陷阱,都会触发陷阱,使得所在行和列发生编号,即跳到另外一个格子上。假如第3行第3列的陷阱,使得移动到第4行第4列,那么陷阱的偏移量为(1,1)。当然通过陷阱移动到另外一个格子上时,也会触发新一格的陷阱。很明显,当移动到一个格子的陷阱的偏移量为(0,0)时,会最终停下来。
求从棋面的每个点出发,最终停下来的位置。如果无法停下来,则输出-1 -1。
从文件trap.in中读入数据。第一行两个整数n,m。表示矩阵由n行m列组成。
接着输入n行,每行2m个数字,每两个数字表示棋面的第i行第j列的陷阱偏移量$(x{ij},y{ij})$。
输出到文件trap.out中。输出n行,每行2m个数字,每两个数字表示棋面的每一格最终停下来的横坐标和纵坐标,如果无法停下来则输出-1 -1。
2 2 0 1 1 0 -1 0 0 -1
-1 -1 -1 -1 -1 -1 -1 -1
3 3 1 1 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
【样例1解释】
如下图所示,方格内为这一格对应的陷阱偏移量。所有位置都在不断循环。
【样例2解释】
如下图所示,所有位置都最终会在右下角处停下来。
对于所有测试数据保证:$1≤n,m≤3000, 1\le i+x{ij}\leq n,{1\lej+y}{ij}\leq m)$
| 时间限制 | 1 秒 |
| 内存限制 | 128 MB |