#arc124b. [arc124_b]XOR Matching 2

[arc124_b]XOR Matching 2

问题陈述

给定长度为 NN 的序列 aabb,它们由非负整数组成。aabb 的第 ii 个元素分别是 aia_ibib_i

当满足以下条件时,非负整数 xx 被称为好的

  • 条件:可以对 bb 进行排列,使得对于每个满足 1iN1 \leq i \leq N 的整数 ii,都有 ai XOR bi=xa_i \text{ XOR } b_i = x,其中 XOR\text{XOR} 表示按位异或。

以升序列出所有好的整数。

什么是 XOR\mathrm{XOR}

整数 xxyy 的按位异或 XOR(x,y)\mathrm{XOR}(x, y) 定义如下:

  • 当将 XOR(x,y)\mathrm{XOR}(x, y) 用二进制表示时,如果 xxyy 中仅有一个数位为 11,则 2k2^k 位(k0k \geq 0)的数字为 11,否则为 00

例如,我们有 3XOR5=63 \mathrm{XOR} 5 = 6(二进制表示为 011XOR101=110011 \mathrm{XOR} 101 = 110)。

约束条件

  • 输入中的所有值均为整数。
  • 1N20001 \leq N \leq 2000
  • 0ai,bi<2300 \leq a_i, b_i < 2^{30}

输入

输入以如下格式从标准输入中给出:

NN a1aNa_1 \cdots a_N b1bNb_1 \cdots b_N

输出

在第一行打印好整数的数量 KK。然后,再打印 KK 行。在这 KK 行中,依次打印第 ii 个最小的好整数。


示例输入 1

3
1 2 3
6 4 7

示例输出 1

1
5
  • 如果将 bb 排序为 (4,7,6)(4, 7, 6),那么有 $a_1 \text{ XOR } b_1 = a_2 \text{ XOR } b_2 = a_3 \text{ XOR } b_3 = 5$,所以 55 是一个好整数。没有其他好整数。

示例输入 2

2
0 1
0 2

示例输出 2

0

示例输入 3

24
14911005 70152939 282809711 965900047 168465665 337027481 520073861 20800623 934711525 944543101 522277111 580736275 468493313 912814743 99651737 439502451 365446123 198473587 285587229 253330309 591640417 761745547 247947767 750367481
805343020 412569406 424258892 329301584 123050452 1042573510 1073384116 495212986 158432830 145726540 623594202 836660574 380872916 722447664 230460104 718360386 620079272 109804454 60321058 38178640 475708360 207775930 393038502 310271010

示例输出 3

8
107543995
129376201
139205201
160626723
312334911
323172429
481902037
493346727