#arc152e. [arc152_e]Xor Annihilation

[arc152_e]Xor Annihilation

问题描述

在数轴上,坐标为x=1,2,3,...,2N1x=1,2,3,...,2^N-1的位置上有2N12^N-1个小球,第ii个小球的重量为wiw_i。这里,w1,w2,...,w2N1w_1, w_2,...,w_{2^N-1}112N12^N-1之间整数的排列。你需要选择一个不超过2N12^N-1的非负整数ZZ,并将重量ZZ附加到坐标为x=pm100100100x=\\pm 100^{100^{100}}的每个位置上。然后,小球们将同时开始移动,规则如下:

  • 每个时间点,假设RR是位于小球坐标右侧的小球和附加重量的重量的异或和,LL是位于小球坐标左侧的小球和附加重量的重量的异或和。如果R>LR>L,小球向右以每秒11的速度移动;如果L>RL>R,小球向左以每秒11的速度移动;如果L=RL=R,小球静止不动。
  • 如果有多个小球存在于同一坐标上(例如,从左边和右边来的两个小球到达同一坐标),这些小球将合并为一个小球,其重量为它们以前重量的异或和。

有多少个ZZ的值使得所有小球在100100100^{100}秒内静止不动?

什么是异或运算(mathrmXOR\\mathrm{XOR})?

非负整数AABB的二进制异或运算AoplusBA \\oplus B定义如下:

  • AoplusBA \\oplus B表示为二进制形式时,第kk位(kgeq0k \\geq 0)是11当且仅当AABB的第kk位中只有一位是11,否则为00

例如,3oplus5=63 \\oplus 5 = 6(二进制形式为:011oplus101=110011 \\oplus 101 = 110)。
通常,kk个非负整数p1,p2,p3,dots,pkp_1, p_2, p_3, \\dots, p_k的异或运算被定义为$(\\dots ((p_1 \\oplus p_2) \\oplus p_3) \\oplus \\dots \\oplus p_k)$,并且可以证明与p1,p2,p3,dots,pkp_1, p_2, p_3, \\dots, p_k的顺序无关。

约束条件

  • 2leqNleq182\\leq N\\leq 18
  • 1leqwileq2N11\\leq w_i\\leq 2^N-1
  • wineqwjw_i\\neq w_j,其中ineqji\\neq j
  • 输入中的所有值都是整数。

输入

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

NN w1w_1 w2w_2 ldots\\ldots w2N1w_{2^N-1}

输出

输出一个整数作为答案。

示例一

2
1 2 3

示例一输出

1

我们将重量为ii的小球简称为ii

如果Z=0Z=0,例如,1122首先向右移动,33向左移动。然后,当2233碰撞并合并为一个小球时,它开始向左移动。随后,当所有从1133的小球合并为一个小球时,它静止不动。因此,Z=0Z=0满足条件。

另一方面,如果Z=3Z=3,那么1122将继续向左移动,33将继续向右移动,朝着附加重量移动约100100100100^{100^{100}}秒。因此,Z=3Z=3不满足条件。

结果表明,只有Z=0Z=0是满足条件的值,因此应该输出11

示例二

3
7 1 2 3 4 5 6

示例二输出

2