#1505. 易守难攻

易守难攻

题目描述

袋鼠将军需要选择若干个地形制高点作为驻地。整个平原被划分为一个 nnmm 列的网格,每个格子上都有一个高度值。我们称格子 (x,y)(x, y)(其中 1xn,1ym1 \leq x \leq n, 1 \leq y \leq m)为 驻地点,当且仅当它满足以下两个条件:

  • 该格子不位于边界上,即 1<x<n1 < x < n1<y<m1 < y < m
  • 该格子的高度值 严格大于88 个相邻格子的高度值。与 (x,y)(x, y) 相邻的格子包括:$$(x-1,y-1),\ (x-1,y),\ (x-1,y+1),\ (x,y-1),\ (x,y+1),\ (x+1,y-1),\ (x+1,y),\ (x+1,y+1) $$

现在,袋鼠将军可以任意重新分配格子的高度值。它可以将整数 1,2,,n×m1, 2, \ldots, n \times m 各放入一个格子中使其成为对应格子的高度值,且使得每个数恰好出现一次。

你需要给出一组高度值的分配方案,使得 驻地点 的个数等于指定的值;或者报告不存在这样的分配方案。


输入格式

输入包含多组数据。

首先输入一行一个整数 TT (1T1041 \leq T \leq 10^4),表示数据的组数。

对于每组数据,输入一行三个整数 nn, mm, kk (1n1001 \leq n \leq 100, 1n1001 \leq n \leq 100, 0kn×m0 \leq k \leq n \times m),表示整个平原被划分为了 nnmm 列的网格,且 驻地点 的个数需要为 kk

保证对于一个测试点的所有数据,n×mn \times m 的和不超过 10610^6


输出格式

对于每组数据:

  • 如果存在合法的分配方案,使得 驻地点 的个数等于指定的值,首先输出一行一个字符串 "Yes",然后输出 nn 行,每行 mm 个整数,表示划分的方案。如果存在多组合法的分配方案,输出一组即可。
  • 如果不存在合法的分配方案,输出一行一个字符串 "No"

注意: 输出对大小写不敏感。例如,"YES""yEs" 都可以表示存在合法的分配方案。


样例

4
3 3 1
4 5 2
1 1 1
1 2 0
Yes
4 3 5
7 9 1
2 8 6
Yes
2 17 16 4 3
15 18 14 13 12
11 10 9 19 8
20 1 7 6 5
No
Yes
2 1

提示

在第一组数据中,有且仅有位于 (2,2)(2, 2)99 大于相邻的所有高度值。

在第二组数据中,位于 (2,2)(2, 2)1818 与位于 (3,4)(3, 4)1919 大于相邻的所有高度值。

在第三组数据中,不存在合法的分配方案。

在第四组数据中,可以被选择为驻地点的格子的数量为 00

样例

4
3 3 1
4 5 2
1 1 1
1 2 0
Yes
4 3 5
7 9 1
2 8 6
Yes
2 17 16 4 3
15 18 14 13 12
11 10 9 19 8
20 1 7 6 5
No
Yes
2 1

提示

在第一组数据中,有且仅有位于 (2,2)(2, 2)99 大于相邻的所有高度值。

在第二组数据中,位于 (2,2)(2, 2)1818 与位于 (3,4)(3, 4)1919 大于相邻的所有高度值。

在第三组数据中,不存在合法的分配方案。

在第四组数据中,可以被选择为驻地点的格子的数量为 00