#ARC138D. [ARC138D] Differ by K bits

[ARC138D] Differ by K bits

配点 : 700700

問題文

整数 N,KN,K が与えられます. (0,1,,2N1)(0,1,\cdots,2^N-1) の順列 P=(P0,P1,,P2N1)P=(P_0,P_1,\cdots,P_{2^N-1}) であって,以下の条件を満たすものが存在するか判定し, また存在するなら一つ構成してください.PP の添字が 00 から始まることに注意してください.

  • すべての ii (0i2N10 \leq i \leq 2^N-1) について,PiP_iPi+1mod2NP_{i+1 \mod 2^N}22 進表記でちょうど KK 桁だけ異なる. なお,比較の際はどちらも leading 00's を補って NN 桁に揃えた上で比較する.

制約

  • 1KN181 \leq K \leq N \leq 18
  • 入力される値はすべて整数

入力

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

NN KK

出力

条件を満たす PP が存在しない場合,No と出力せよ. 存在する場合,以下の形式で答えを出力せよ.

Yes

P0P_0 P1P_1 \cdots P2N1P_{2^N-1}

条件を満たす解が複数存在する場合,どれを出力しても正解とみなされる.

3 1
Yes
0 1 3 2 6 7 5 4

PP22 進表記で書くと,P=(000,001,011,010,110,111,101,100)P=(000,001,011,010,110,111,101,100) です.

例えば P1=001,P2=011P_1=001,P_2=011 なので,これらはちょうど 11 桁だけ異なっており,i=1i=1 について条件が成立していることが確認できます. 同様に,すべての ii についても条件を満たしています.

2 2
No