AT_arc124_b [ARC124B] XOR Matching 2
Description
[problemUrl]: https://atcoder.jp/contests/arc124/tasks/arc124_b
非負整数のみからなる長さ $ N $ の数列 $ a,b $ が与えられます。$ a,b $ の $ i $ 番目の要素はそれぞれ $ a_i,\ b_i $ です。
非負整数 $ x $ が以下の条件を満たすとき、$ x $ を **よい数** と呼びます。
- 条件:$ b $ を並べ替えて、$ 1\ \leq\ i\ \leq\ N $ を満たすどの整数 $ i $ についても $ a_i\ \text{\ XOR\ }\ b_i\ =\ x $ が成立するようにすることができる。ここで、$ \text{XOR\ } $ はビットごとの排他的論理和である。
よい数を小さい方からすべて列挙してください。
$ \text{\ XOR\ } $ とは 整数 $ x,\ y $ のビットごとの排他的論理和 $ x\ \text{\ XOR\ }\ y $ は、以下のように定義されます。
- $ x\ \text{\ XOR\ }\ y $ を二進表記した際の $ 2^k $ ($ k\ \geq\ 0 $) の位の数は、$ x,\ y $ を二進表記した際の $ 2^k $ の位の数のうち一方のみが $ 1 $ であれば $ 1 $、そうでなければ $ 0 $ である。
例えば、$ 3\ \text{\ XOR\ }\ 5\ =\ 6 $ となります (二進表記すると: $ 011\ \text{\ XOR\ }\ 101\ =\ 110 $)。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ a_1 $ $ \cdots $ $ a_N $ $ b_1 $ $ \cdots $ $ b_N $
Output Format
$ 1 $ 行目によい数の個数 $ K $ を出力せよ。 続けて $ K $ 行出力せよ。続く $ K $ 行の $ i $ 行目には小さい方から $ i $ 番目のよい数を出力せよ。
Explanation/Hint
### 制約
- 与えられる入力は全て整数
- $ 1\ \leq\ N\ \leq\ 2000 $
- $ 0\ \leq\ a_i,\ b_i\