有一个长度为 的序列 ,所有元素均为 。接下来我们将依次对 执行 个操作。第 个操作可记为 个不同的整数 ,表示对于所有 ,我们将把序列中第 个元素的值改为 。令 表示所有操作后的结果序列。
我们现在要求您重新排列这些操作,但保持最终的结果不变。更正式地,令 表示一个 的排列,且与 不同。您将会依次对序列 执行第 ,,..., 个操作,最终的结果序列必须和 相同。您的任务就是找到这样的排列,或表明其不存在。
请回忆:一个 的排列是一个长度为 的序列,每个从 到 (含两端)的整数在其中都恰好出现一次。令 和 为两个 的排列,我们称它们是不同的,若存在整数 满足 且 。
有多组测试数据。第一行输入一个整数 表示测试数据组数,对于每组测试数据:
第一行输入两个整数 和 ()表示操作的数量和序列的长度。
对于接下来 行,第 行首先输入一个整数 ()表示第 个操作修改的元素数量。接下来输入 个不同的整数 ()表示被修改的元素下标。
保证所有数据 之和不超过 ,且所有数据 之和不超过 。
对于每组测试数据:
如果存在所求的排列,首先输出一行 。接下来在第二行输出 个由单个空格分隔的整数 表示答案。如果有多种合法答案,您可以输出任意一种。
如果不存在所求的排列,仅需输出一行 。
请不要在行末输出多余空格,否则您的答案可能会被认为是错误的!
3 3 6 3 3 1 5 2 5 3 2 2 6 2 3 3 1 3 2 2 3 1 1 3 2 2 1
Yes 3 1 2 No No
对于第一组样例数据,按 或 的顺序执行操作,结果序列均为 。