問題文
長さ N の非負整数列 $A=(A_1,A_2,\\ldots,A_{N}),B=(B_1,B_2,\\ldots,B_{N})$ が与えられます。
数列 A に対し以下の操作を 70000 回以下行うことで A を B に一致させられるか判定し、可能な場合は実際に操作手順を一つ示してください。
- 整数 K(1leKleN) を選ぶ。全ての i(2leqileqK) について、 Ai の値を Ai−1oplusAi で置き換える。この置き換えは全ての i(2leqileqK) に対して同時に行う。
ただしここで、oplus はビット単位 mathrmXOR 演算を表します。
ビット単位 mathrmXOR 演算とは
非負整数 A,B のビット単位 mathrmXOR 演算、AoplusB は、以下のように定義されます。
- AoplusB を二進表記した際の 2k(kgeq0) の位の数は、A,B を二進表記した際の 2k の位の数のうち一方のみが 1 であれば 1、そうでなければ 0 である。
例えば、3oplus5=6 となります(二進表記すると: 011oplus101=110)。
制約
- 2leqNleq1000
- 0leqAi,Bi<260
- 入力は全て整数
入力
入力は以下の形式で標準入力から与えられる。
N
A1 A2 ldots AN
B1 B2 ldots BN
出力
70000 回以下の操作で A を B に一致させられない場合、No
と出力せよ。一致させられる場合、操作回数を M 回とし、i 回目の操作で選んだ整数を Ki として以下の形式で出力せよ。
Yes
M
K1 K2 ldots KM
条件を満たす解が複数存在する場合、どれを出力しても正解とみなされる。
入力例 1
3
1 2 0
1 2 3
出力例 1
Yes
2
2 3
この出力例では、操作によって数列 A は以下のように変化します。
- 初期状態:A=(1,2,0)
- 1 回目の操作後:A=(1,3,0)
- 2 回目の操作後:A=(1,2,3)
2 回の操作後、A と B は一致しているのでこの出力は条件を満たします。
入力例 2
2
10 100
1 0
出力例 2
No
入力例 3
2
1152921504606846975 0
1152921504606846975 0
出力例 3
Yes
0