AT_arc145_e [ARC145E] Adjacent XOR
Description
[problemUrl]: https://atcoder.jp/contests/arc145/tasks/arc145_e
長さ $ N $ の非負整数列 $ A=(A_1,A_2,\ldots,A_{N}),B=(B_1,B_2,\ldots,B_{N}) $ が与えられます。
数列 $ A $ に対し以下の操作を $ 70000 $ 回以下行うことで $ A $ を $ B $ に一致させられるか判定し、可能な場合は実際に操作手順を一つ示してください。
- 整数 $ K\ (1\le\ K\ \le\ N) $ を選ぶ。全ての $ i\ (2\leq\ i\ \leq\ K) $ について、$ A_i $ の値を $ A_{i-1}\ \oplus\ A_i $ で置き換える。この置き換えは全ての $ i\ (2\leq\ i\ \leq\ K) $ に対して同時に行う。
ただしここで、$ \oplus $ はビット単位 $ \mathrm{XOR} $ 演算を表します。
ビット単位 $ \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
入力は以下の形式で標準入力から与えられる。
> $ N $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ B_1 $ $ B_2 $ $ \ldots $ $ B_N $
Output Format
$ 70000 $ 回以下の操作で $ A $ を $ B $ に一致させられない場合、`No` と出力せよ。一致させられる場合、操作回数を $ M $ 回とし、$ i $ 回目の操作で選んだ整数を $ K_i $ として以下の形式で出力せよ。
> Yes $ M $ $ K_1 $ $ K_2 $ $ \ldots $ $ K_M $
条件を満たす解が複数存在する場合、どれを出力しても正解とみなされる。
Explanation/Hint
### 制約
- $ 2\ \leq\ N\ \leq\ 1000 $
- $ 0\ \leq\ A_i,\ B_i\