#CF1848F. Vika 与 Wiki

    ID: 7195 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 2 上传者: 标签>其他二分查找线性代数位运算组合数学动态规划数学分治

Vika 与 Wiki

F. Vika 与 Wiki
每次测试的时间限制:2 秒
每次测试的内存限制:256 兆字节

最近,VikaVika 在学习她最喜欢的互联网资源——维基百科。

在维基百科的广阔天地里,她读到了一种有趣的数学运算——按位异或(记作 \oplus)。

VikaVika 开始研究这种神秘运算的性质。为此,她取了一个由 nn 个非负整数组成的数组 aa,并对其所有元素同时应用如下操作:

ai=aia(i+1)modna_i = a_i \oplus a_{(i+1) \bmod n}

其中 xmodyx \bmod y 表示 xx 除以 yy 的余数。数组元素从 00 开始编号。

由于只进行一次上述操作不足以彻底研究,VikaVika 重复执行该操作,直到数组 aa 全部变为零。

问需要多少次上述操作才能使数组 aa 的所有元素变为零。如果这一时刻永远不会到来,则输出 1-1


输入
第一行包含一个整数 nn1n2201 \le n \le 2^{20})—— 数组 aa 的长度。

保证 nn 可以表示为 2k2^k,其中 kk 为某个整数(0k200 \le k \le 20)。

第二行包含 nn 个整数 a0,a1,a2,,an1a_0, a_1, a_2, \dots, a_{n-1}0ai1090 \le a_i \le 10^9)—— 数组 aa 的元素。


输出
输出一个整数 —— 使数组 aa 的所有元素变为零所需的最少操作次数,如果数组永远不会变为零,则输出 1-1


示例

示例 1
输入

4
1 2 1 2

输出

2

示例 2
输入

2
0 0

输出

0

示例 3
输入

1
14

输出

1

示例 4
输入

8
0 1 2 3 4 5 6 7

输出

5

注释
在第一个示例中,经过一次操作后,数组 aa 变为 [3,3,3,3][3,3,3,3]。再经过一次操作后,变为 [0,0,0,0][0,0,0,0]

在第二个示例中,数组一开始就全为零。

在第三个示例中,经过一次操作后,数组变为 [0][0]