题目描述
对于一个整数数组 A=(A1,A2,ldots,AN+K−1) (1leqAileqN+K−1),我们构造一个数组 B=(B1,B2,ldots,BN),其中 Bi 是 Ai,Ai+1,ldots,Ai+K−1 中不同元素的个数。
给定 B1,B2,ldots,BN,判断是否存在一个数组 A 能够产生这样的数组 B,如果存在则构造出一个满足条件的数组。
解决每个输入文件中的 T 个测试用例。
约束条件
- 1leTle5cdot104
- 2leNle2cdot105
- 2leKle2cdot105
- 1leBileK
- 同一输入文件中的 N 的总和不超过 2cdot105。
- 同一输入文件中的 K 的总和不超过 2cdot105。
- 输入中的所有值都是整数。
输入
输入以以下格式从标准输入给出:
T
case1
case2
vdots
caseT
每个测试用例的格式如下:
N K
B1 B2 ldots BN
输出
对于每个测试用例,如果不存在满足条件的数组 A,输出 NO
。
否则,按照以下格式输出答案:
YES
A1 A2 ldots AN+K−1
这里,必须满足 1leqAileqN+K−1,且 A 应该产生 B。如果存在多个解,任意一个解都可接受。
在打印 YES
或 NO
时,大小写不限制。
样例输入 1
3
3 3
1 2 1
4 3
1 2 2 1
6 4
3 3 3 3 3 3
样例输出 1
NO
YES
1 1 1 2 2 2
YES
1 2 3 1 2 3 1 2 3