配点 : 1100 点
問題文
整数列 A=(A1,A2,…,AN+K−1) (1≤Ai≤N+K−1) に対して、Bi を Ai,Ai+1,…,Ai+K−1 の中の相異なる要素の個数として、列 B=(B1,B2,…,BN) を作ります。
B1,B2,…,BN が与えられます。この列 B を生成し得た列 A が存在するか判定し、存在する場合はそのような列 A を一つ構成してください。
各入力ファイルについて、T 個のテストケースを解いてください。
制約
- 1≤T≤5⋅104
- 2≤N≤2⋅105
- 2≤K≤2⋅105
- 1≤Bi≤K
- 各入力ファイル内の N の総和は 2⋅105 を超えない。
- 各入力ファイル内の K の総和は 2⋅105 を超えない。
- 入力中のすべての値は整数である。
入力
入力は標準入力から以下の形式で与えられる。
T
case1
case2
⋮
caseT
各ケースは以下の形式である。
N K
B1 B2 … BN
出力
各テストケースについて、題意を満たす列 A が存在しなければ、NO と出力せよ。
そうでなければ、答えを次の形式で出力せよ。
YES
A1 A2 … AN+K−1
ここで、1≤Ai≤N+K−1 でなければならず、A は B を生成するものでなければならない。
複数の解が存在する場合は、そのいずれも認められる。
YES または NO の出力において、各文字は英大文字・小文字のいずれでもよい。
3
3 3
1 2 1
4 3
1 2 2 1
6 4
3 3 3 3 3 3
NO
YES
1 1 1 2 2 2
YES
1 2 3 1 2 3 1 2 3