下棋
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}小花和葡萄是两位热爱策略游戏的少年,今天他们决定用一种全新的方式切磋——在数字的田野上展开一场“三子棋对决”。不过这次,棋盘不再局限于传统的 15\times 15,而是一片由 nm 列组成的广阔天地。
\hspace{15pt}小花执黑先行(用数字 1 表示),葡萄执白(用数字 0 表示)。他们并不执着于连成三子,而是想看看:如果两个人都竭尽全力、步步为营,最终能否在这片棋盘上达成一种完美的平衡——平局?

\hspace{15pt}现在,请你帮助小花和葡萄实现这个目标。给定棋盘 a 大小为 n 行和 m 列,请你构造一种铺满整个棋盘的方案,使得黑白棋子数量相等(若总格数为奇数,则黑子比白子多一枚),且双方都无法形成三连珠。注意:小花是先手,第一步一定是黑子(1)。

\hspace{15pt}其中,三子相连有以下四种情况:
\hspace{23pt}\bullet\,横向三枚相连,即存在位置 (i,j) \left(1\leqslant i\leqslant n;\, 3\leqslant j\leqslant m\right),使得 a_{i,j}=a_{i,j-1}a_{i,j-1}=a_{i,j-2}
\hspace{23pt}\bullet\,纵向三枚相连,即存在位置 (i,j) \left(3\leqslant i\leqslant n;\, 1\leqslant j\leqslant m\right),使得 a_{i,j}=a_{i-1,j}a_{i-1,j}=a_{i-2,j}
\hspace{23pt}\bullet\,正斜向三枚相连,即存在位置 (i,j) \left(3\leqslant i\leqslant n;\, 3\leqslant j\leqslant m\right),使得 a_{i,j}=a_{i-1,j-1}a_{i-1,j-1}=a_{i-2,j-2}
\hspace{23pt}\bullet\,反斜向三枚相连,即存在位置 (i,j) \left(3\leqslant i\leqslant n;\, 1\leqslant j\leqslant m-2\right),使得 a_{i,j}=a_{i-1,j+1}a_{i-1,j+1}=a_{i-2,j+2}

输入描述:

\hspace{15pt}在一行上输入两个整数 n,m \left(1 \leqslant n,m,n\times m \leqslant 10^6\right),表示棋盘的行数、列数。

输出描述:

\hspace{15pt}若存在合法方案,输出 n 行,每行一个长度为 m,仅由字符 01 组成的字符串,第 i 行第 j 列的字符表示是小花的落子或者葡萄的落子;若不存在,则输出 -1
示例1

输入

复制
3 3

输出

复制
001
110
011
示例2

输入

复制
4 4

输出

复制
0101
1101
0010
1010