High contrast pattern
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

在 3 月结束的 EC-Final 中,"Night Walker"非常遗憾的没有做出 01 矩阵构造。因此今天,我们自己出一道 01 矩阵构造,来弥补那天的遗憾。

n=3, m=4, k=6

在一个方格图中有两种颜色,每个方格可以是黑色 (用 "1" 表示) 或者白色 (用 "0" 表示);如果两个方格的颜色相同并且它们公用上下左右四个方向的一条边 (即这两个方格相邻),那我们称这两个方格是联通的。

如果方格 A 和方格 B 是联通的,方格 B 和方格 C 是联通的,那么方格 A 和方格 C 是联通的。

我们称作一个方格集合为联通块当且仅当这个集合的所有方格都是联通的并且方格图上没有其他方格与集合内的任意一个方格联通。显然,对于方格图上的每个方格,它只存在于一个联通块中。

给定 n,m,k,请构造出一个 n 行,m 列,含有 k 个联通块的 01 矩阵,或指出这样的矩阵不存在。

输入描述:

有多组测试数据,第一行包含一个整数 T (T \leq 10^6) 表示测试数据的组数。

接下来 T 行,每行包含三个整数 n, m, k (1 \leq n \leq m \leq 50,1 \leq k \leq n \times m),分别表示矩阵的行数、列数和联通块数量。

输入数据保证 \sum n \times m \leq 10^6

输出描述:

对于每组测试数据,如果存在符合要求的矩阵,首先输出一行 "Yes"(不包含引号,不区分大小写),接下来 n 行,每行输出一个长度为 m 的 01 串,表示构造出的矩阵。如果有多种合法答案,您可以输出任意一种。如果不存在符合要求的矩阵,仅需要输出一行 "No"。
示例1

输入

复制
5
3 4 6
3 3 5
2 4 4
3 3 8
2 2 2

输出

复制
Yes
0110
0101
1000
Yes
001
010
100
Yes
0101
0101
No
Yes
10
00

备注:

样例一如题目描述中的图所示。

方格图中第 i 行第 j 列的方格表示为 (i, j),其余样例解释如下:

样例二:五个联通块分别为 \{(1,1),(1,2),(2,1)\},\{(2,2)\},\{(1,3)\},\{(3,1)\},\{(2,3),(3,2),(3,3)\}

样例三:四个联通块分别为 \{(1,1),(2,1)\},\{(1,2),(2,2)\},\{(1,3),(2,3)\},\{(1,4),(2,4)\}

样例五:两个联通块分别为 \{(1,1)\},\{(1,2),(2,1),(2,2)\}