小苯的01矩阵构造
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}小苯想要构造一个 n 行 n 列、仅由 01 组成的矩阵,满足:
\hspace{23pt}\bullet\,其每行的全部元素的按位异或异或和之和 \rm{sum}_r、每列的全部元素的按位异或异或和之和 \rm{sum}_c 相加恰好为 k(形式化的,\rm{sum}_r + \rm{sum}_c = k)。
\hspace{15pt}请你帮帮小苯。

【名词解释】
\hspace{15pt}异或和:两个数进行按位异或运算的结果。

输入描述:

\hspace{15pt}第一行输入两个整数 n,k\left(1\leqq n \leqq 10^3;\ 0\leqq k \leqq 2\times n \right)

输出描述:

\hspace{15pt}如果不存在满足条件的矩阵,直接输出 -1;否则,一共 n 行,每行输出一个长度为 n、仅由字符 \texttt{`0'}\texttt{`1'} 组成的字符串,代表所构造的矩阵。
\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
3 2

输出

复制
001
011
011

说明

\hspace{15pt}在这个样例中,矩阵第一行的异或和为 1,第二行的异或和为 0,第三行的异或和为 0;第一列的异或和为 0,第二列的异或和为 0,第三列的异或和为 1。和恰好为 2
示例2

输入

复制
2 1

输出

复制
-1

说明

\hspace{15pt}我们可以证明,不存在满足条件的矩阵。