#L4040. 「SNOI2024」拉丁方

「SNOI2024」拉丁方

题目描述

我们定义一个 n×nn \times n 的矩阵 AA拉丁方,当且仅当,每行、每列都是一个 1n1 \sim n 的排列。

现在给你矩阵 AA 左上角的一个 R×CR \times C 的子矩阵,也就是 Ai,jA_{i, j} (1iR,1jC)(1 \leq i \leq R, 1 \leq j \leq C)。问能不能将剩下的位置填上数,使得它是一个拉丁方。


输入格式

多组测试数据,第一行一个整数 TT 表示测试数据组数。

对于每组测试数据,第一行三个整数 nn, RR, CC 表示矩阵大小和已知的矩阵大小。

接下来 RR 行,每行 CC 个数,其中第 ii 行的第 jj 个数表示 Ai,jA_{i, j}


输出格式

对于每组数据,第一行输出一个字符串 Yes 或者 No,表示能否找到满足条件的拉丁方。

如果能找到满足条件的拉丁方,那么在接下来 nn 行,每行输出 nn 个数,表示一个满足条件的拉丁方。如果有多组满足条件的方案,输出任意一种即可。


样例

输入

3
2 1 1
1
3 2 2
1 2
2 1
5 2 3
1 2 3
4 3 2

输出

Yes
1 2
2 1
No
Yes
1 2 3 4 5
4 3 2 5 1
2 4 5 1 3
3 5 1 2 4
5 1 4 3 2

对于第二组数据,根据前两行可以发现,A1,3=A2,3=3A_{1, 3} = A_{2, 3} = 3,所以不存在满足条件的拉丁方。

对于第三组数据,可以发现输出是一个满足条件的拉丁方,并且左上角是输入的矩阵。下面也是一个满足条件的方案。

[ \begin{bmatrix} 1 & 2 & 3 & 5 & 4 \ 4 & 3 & 2 & 1 & 5 \ 3 & 5 & 1 & 4 & 2 \ 2 & 4 & 5 & 3 & 1 \ 5 & 1 & 4 & 2 & 3 \end{bmatrix} ]


数据范围与提示

对于所有的数据,保证 1T101 \leq T \leq 101n5001 \leq n \leq 5001R,Cn1 \leq R, C \leq n1Ai,jn1 \leq A_{i, j} \leq n,保证输入的子矩阵不存在一行或者一列有两个相同的数。

具体如下:

测试点编号 nn \leq 特殊性质
121 \sim 2 66
343 \sim 4 1010
55 500500 A
676 \sim 7 100100 B
898 \sim 9 300300
1010 500500
111211 \sim 12 C
131413 \sim 14 100100
151615 \sim 16 300300
172017 \sim 20 500500

特殊性质 A:保证 R=1R = 1

特殊性质 B:保证 C=nC = n

特殊性质 C:保证 R,Cn2R, C \leq \frac{n}{2}