通常,智能手机可以通过密码、指纹识别或面部识别来锁定。还有另一种常用的方法:图案锁(Pattern Lock)。
图案锁允许你通过在屏幕上绘制图案来锁定和解锁设备。图案是通过在网格上连接一系列点形成的折线。锁屏上的点阵网格有 $n$ 行 $m$ 列。行与行之间以及列与列之间的间距相等。我们将第 $x$ 行第 $y$ 列的点记为 $(x, y)$。我们使用点的序列来表示图案,即折线路径。例如,序列 $\{(1, 1), (2, 3), (3, 2), (2, 2)\}$ 可以表示下图所示的图案。
设一个包含 $k$ 个点的图案为 $\{A_1, A_2, \dots, A_k\}$。锁定智能手机的有效图案应满足以下条件:
- 每个点最多被访问一次。即对于每个 $1 \le i < j \le k$,$A_i \neq A_j$。
- 对于每个 $1 \le i < k$,连接 $A_i$ 和 $A_{i+1}$ 的线段不能经过其他点。例如,$A_i = (1, 1), A_{i+1} = (3, 3)$ 是无效的,因为该线段经过了 $(2, 2)$。
小兔子希望他的智能手机尽可能安全。因此,他需要一个强图案来锁定他的设备。强图案是满足一些额外条件的有效图案:
- 每个点恰好被访问一次。即 $k = n \times m$。
- 对于每个 $1 < i < k$,由线段 $A_iA_{i-1}$ 和线段 $A_iA_{i+1}$ 形成的角必须是锐角(小于 $90^\circ$)。
你能为他构造一个强图案吗?
输入格式
输入包含两个整数 $n$ 和 $m$ ($2 \le n, m \le 500$),表示网格的行数和列数。
输出格式
输出 $n \times m$ 行。第 $i$ 行包含两个整数 $x_i$ 和 $y_i$ ($1 \le x_i \le n, 1 \le y_i \le m$),表示图案的第 $i$ 个点为 $(x_i, y_i)$。
可以证明答案总是存在的。如果存在多个答案,输出任意一个即可。
样例
输入 1
2 2
输出 1
1 1 2 1 1 2 2 2
说明
请注意,如果输出的长度或格式与答案不符,你可能会收到格式错误(Presentation Error)的判决。