#arc138d. [arc138_d]Differ by K bits

[arc138_d]Differ by K bits

問題文

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

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

制約

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

入力

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

NN KK

出力

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

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

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


入力例 1

3 1

出力例 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 2

出力例 2

No