小红的小苯题
题号:NC294436
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}小苯希望小红构造一个 nm 列的矩阵,满足:
\hspace{23pt}\bullet\,每一行所有元素的异或和、每一列所有元素的异或和,这 n+m 个数恰好构成一个长度为 n+m排列
\hspace{23pt}\bullet\,矩阵中每个元素的值在 010^9 之间。
\hspace{15pt}你能帮帮小红吗?

\hspace{15pt}长度为 n排列是由 1,2,\dots,nn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

输入描述:

\hspace{15pt}在一行上输入两个整数 n, m \left(1 \leqq n, m \leqq 500\right),表示矩阵的行数和列数。

输出描述:

\hspace{15pt}如果无法构造出满足条件的矩阵,直接输出 -1。否则,输出 n 行,每行 m 个整数,表示你所构造的矩阵。
\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
1 2

输出

复制
1 3

说明

第一行所有元素的异或和等于2。
第一列所有元素的异或和等于1。
第二列所有元素的异或和等于3。
{2,1,3}恰好构成一个排列,符合条件。
示例2

输入

复制
2 2

输出

复制
-1