#arc152e. [arc152_e]Xor Annihilation

[arc152_e]Xor Annihilation

一条直线上有 2N12^N-1 个初始坐标分别为 12N11 \sim 2^N-1 的动点。其中坐标为 ii 的点有一个权值 wiw_i

现在你要在 +100100100+100^{100^{100}}100100100-100^{100^{100}} 坐标处各加一个不超过 2N12^N-1 非负权值 ZZ,然后 2N12^N-1 个点会按照下列规则同时从初始坐标开始移动:

  • 每个单位时间内,记严格小于一个点的坐标的权值异或和为 LL,严格大于这个点的权值异或和为 RR。当 L<RL < R 时,这个点会以 11 个单位长度每个单位时间的速度向右移动;L>RL > R 时则会以同样速度向左移动;L=RL = R 时,这个点会静止不动。

  • 当两个点在同一时间到达同一坐标时,这两个点会合并成一个点,新点的权值为两个点权值的异或和。

请求出可以使所有点在 100100100^{100} 个单位时间内静止下来的 ZZ 的个数。

(注:+100100100+100^{100^{100}}100100100-100^{100^{100}} 处只是增加了 ZZ 的权值,初始时并没有动点。)

保证 2N182 \le N \le 181wi2N11 \le w_i \le 2^N-1iji \not = jwiwjw_i \not = w_j,输入的所有数均为整数。

何为异或和