#agc060e. [agc060_e]Number of Cycles

[agc060_e]Number of Cycles

問題文

この問題では,順列と言った際には (1,2,cdots,N)(1,2,\\cdots,N) の順列を指すものとします.

順列 a=(a1,a2,cdots,aN)a=(a_1,a_2,\\cdots,a_N) に対し,f(a)f(a)aa のサイクルの個数と定義します. より正確には,f(a)f(a) の値は次のように定義されます.

  • 11 から NN までの番号のついた NN 頂点からなる無向グラフを考える. そして,各 1leqileqN1 \\leq i \\leq N について,頂点 ii と頂点 aia_i 間を結ぶ辺を追加する. このときのグラフの連結成分の個数を f(a)f(a) とする.

順列 P=(P1,P2,cdots,PN)P=(P_1,P_2,\\cdots,P_N) および整数 KK が与えられます. 次の条件を満たす順列 xx が存在するかどうか判定し,存在するなら一つ構築してください.

  • yi=Pxiy_i=P_{x_i} として,順列 yy を定める.
  • この時,f(x)+f(y)=Kf(x)+f(y)=K である.

11 つの入力ファイルにつき,TT 個のテストケースを解いてください.

制約

  • 1leqTleq1051 \\leq T \\leq 10^5
  • 2leqNleq2times1052 \\leq N \\leq 2 \\times 10^5
  • 2leqKleq2N2 \\leq K \\leq 2N
  • (P1,P2,cdots,PN)(P_1,P_2,\\cdots,P_N)(1,2,cdots,N)(1,2,\\cdots,N) の順列
  • 11 つの入力ファイルにつき,NN の総和は 2times1052 \\times 10^5 を超えない
  • 入力される数はすべて整数

入力

入力は以下の形式で標準入力から与えられる.

TT case1case_1 case2case_2 vdots\\vdots caseTcase_T

各ケースは以下の形式で与えられる.

NN KK P1P_1 P2P_2 cdots\\cdots PNP_N

出力

各ケースに対し,条件を満たす順列 xx が存在しない場合は No と,存在する場合は以下の形式で答えを出力せよ.

Yes x1x_1 x2x_2 cdots\\cdots xNx_N

Yes, No を出力する際,各文字は英大文字・小文字のいずれでもよい. 解が複数存在する場合,どれを出力しても正解とみなされる.


入力例 1

3
3 3
1 3 2
2 2
2 1
4 8
1 2 3 4

出力例 1

Yes
2 1 3
No
Yes
1 2 3 4

11 つめのケースでは,x=(2,1,3)x=(2,1,3) とすれば y=(3,1,2)y=(3,1,2) となり,f(x)+f(y)=2+1=3f(x)+f(y)=2+1=3 となります.