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\