扫雷难度调节
题号:NC312573
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}早在 1990 年,微软(Microsoft)公司在 Windows 3.0 操作系统中首次发布了一款益智类游戏《扫雷》,并于 1992 年在 Windows 3.1 操作系统中首次预装为 Windows 内置游戏。自此,该游戏迅速风靡全球,直到现在都深受广大玩家喜爱。

扫雷游戏截图
\hspace{15pt}游戏《扫雷》中包含一个 nm 列的网格,网格中每个格子可能是地雷,也可能不是地雷。
\hspace{15pt}游戏开始时,系统会随机指定一个 nm 列的矩阵 \{ a_{i, j} \}1 \le i \le n1 \le j \le m),每个元素均为 01。如果 a_{i, j} = 1,则第 i 行第 j 列的格子是地雷;如果 a_{i, j} = 0,则第 i 行第 j 列的格子不是地雷。这种描述所有格子是否为地雷的矩阵,称为扫雷地图

\hspace{15pt}如果一个格子不是地雷,且相邻 8 个格子(上、下、左、右、左上、左下、右上、右下)至少有一个是地雷,则称该格子为 “数字格”。(有些格子可能没有 8 个相邻格子,此时可以忽略不存在的格子。)
\hspace{15pt}用数学语言描述就是:记 (i, j) 为第 i 行第 j 列的格子,如果 (i, j) 不是地雷,且 (i + 1, j)(i - 1, j)(i, j + 1)(i, j - 1)(i + 1, j + 1)(i + 1, j - 1)(i - 1, j + 1)(i - 1, j - 1) 中至少有一个是地雷,则称 (i, j) 为 “数字格”。(有些格子可能不存在,此时可以忽略它们。)

\hspace{15pt}为了调节游戏难度,玩家指定了 “数字格” 的数量 k。请任意给出一个扫雷地图,要求恰有 k 个格子是 “数字格”。如果不存在这样的扫雷地图,请回答 -1

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T1 \le T \le 2 \cdot 10^4)代表数据组数,每组测试数据描述如下:

\hspace{15pt}在一行上输入用空格隔开的三个整数 nmk1 \le n, m \le 10^30 \le k \le n \cdot m),表示网格的行数、网格的列数、“数字格” 的数量。

\hspace{15pt}除此之外,保证单个测试文件的 n \cdot m 之和不超过 10^6

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行。如果不存在这样的扫雷地图,直接输出 -1。否则,请参考下方的格式输出。

\hspace{15pt}一共 n 行,其中第 i 行输出连续的 m 个整数(不使用分隔符隔开)a_{i, 1}, a_{i, 2}, \dots, a_{i, m}1 \le i \le n0 \le a_{i, j} \le 1),表示扫雷地图。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
4
1 1 0
2 3 3
2 3 6
4 4 10

输出

复制
0
111
000
-1
0100
0000
0000
0010