AT_arc199_b [ARC199B] Adjacent Replace
Description
長さ $ N $ の非負整数列 $ A=(A_1,A_2,\ldots,A_N) $ および非負整数 $ K $ が与えられます.
以下の操作を $ 10^4 $ 回以下行うことで $ A_1=K $ にすることが可能かどうか判定してください.
- 整数 $ i\ (1\leq i\leq N-1) $ を選ぶ. $ x=A_i\oplus A_{i+1} $ としたとき, $ A_i,A_{i+1} $ をそれぞれ $ x $ で置き換える.
ここで, $ \oplus $ はビット単位 $ \mathrm{XOR} $ 演算です.
可能な場合,そのような操作手順を一つ出力してください.
$ T $ 個のテストケースが与えられるので,それぞれについて答えてください.
ビット単位 $ \mathrm{XOR} $ 演算とは 非負整数 $ A, B $ のビット単位 $ \mathrm{XOR} $ 、 $ A \oplus B $ は、以下のように定義されます。
- $ A \oplus B $ を二進表記した際の $ 2^k $ ( $ k \geq 0 $ ) の位の数は、 $ A, B $ を二進表記した際の $ 2^k $ の位の数のうち一方のみが $ 1 $ であれば $ 1 $ 、そうでなければ $ 0 $ である。
例えば、 $ 3 \oplus 5 = 6 $ となります (二進表記すると: $ 011 \oplus 101 = 110 $ )。
Input Format
入力は以下の形式で標準入力から与えられる.
> $ T $ $ \mathrm{case}_1 $ $ \mathrm{case}_2 $ $ \vdots $ $ \mathrm{case}_T $
各テストケースは以下の形式で与えられる.
> $ N $ $ K $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $
Output Format
$ \mathrm{case}_1,\mathrm{case}_2,\ldots,\mathrm{case}_T $ に対する答えを順に以下の形式で出力せよ.
操作を $ 10^4 $ 回以下行うことで $ A_1=K $ とすることが不可能な場合 `No` と出力せよ.
可能な場合,操作手順を以下の形式で出力せよ.
> Yes $ M $ $ i_1 $ $ i_2 $ $ \ldots $ $ i_M $
ここで, $ M $ は操作回数, $ i_j\ (1\leq j\leq M) $ は $ j $ 回目の操作で選ぶ整数 $ i $ を表す. $ 0\leq M\leq 10^4, 1\leq i_j\leq N-1 $ を満たす必要がある.
条件を満たす操作手順が複数存在する場合,そのどれを出力しても正解とみなされる.
Explanation/Hint
### Sample Explanation 1
$ 1 $ つ目のテストケースについて,次のように操作をすることで $ A_1=5 $ とすることができます.
1. $ i=2 $ を選ぶ. $ A=(2,7,7) $ になる.
2. $ i=1 $ を選ぶ. $ A=(5,5,7) $ になる.
$ 2 $ つ目のテストケースについて,次のように操作をすることで $ A_1=0 $ とすることができます.
1. $ i=1 $ を選ぶ. $ A=(1,1,4) $ になる.
2. $ i=1 $ を選ぶ. $ A=(0,0,4) $ になる.
3. $ i=1 $ を選ぶ. $ A=(0,0,4) $ になる.
$ 3 $ つ目のテストケースについて, $ 10^4 $ 回以下の操作によって $ A_1=8 $ とすることはできません.
### Constraints
- $ 1\leq T\leq 50 $
- $ 3\leq N\leq 60 $
- $ 0\leq A_i,K\lt 2^{60} $
- 入力は全て整数