编程题
### 问题描述
给定一个由 $N$ 个整数组成的数组 $A$。
考虑以下定义:
- 数组 $A$ 的前缀异或数组定义为数组 $B$,其中 $B[i] = A[1] ⊕ ... ⊕ A[i]$,其中 $⊕$ 表示位异或操作。换句话说,$B = [A[1], A[1] ⊕ A[2], ..., A[1] ⊕ A[2] ... ⊕ A[N]]$。
- 数组 $A$ 的价值是数组 $B$ 中不同值的数量。例如,对于数组 $A = [1, 2, 3, 0]$,我们有 $B = [1, 3, 0, 0]$。数组 $B$ 有 $3$ 个不同的值,因此,数组 $A$ 的价值是 $3$。
- 数组 $A$ 的右移操作是一种改变数组 $A = [A[1], A[2] ..., A[N]]$ 到 $A' = [A[N], A[1], ..., A[N-1]]$ 的转换。
请计算通过在数组 $A$ 上执行任意次数(可能为零次)的右移操作,可以获得的数组 $A$ 的最大价值。
### 输入格式
输入的第一行包含一个整数 $T$ ——需要解决的测试用例的数量。
每个测试用例的第一行包含一个整数 $N$ ——数组的大小。
每个测试用例的第二行包含 $N$ 个空格分隔的整数 $A[1], ..., A[N]$ ——数组 $A$ 的元素。
### 输出格式
对于每个测试用例,输出一个整数,表示通过执行任意次数的右移操作后,可以获得的数组 $A$ 的最大价值。
### 输入样例
```text
3
2
0 0
6
1 1 1 2 2 2
4
1 2 2 8
```
### 输出样例
```text
1
4
4
```
### 限制
$1 ≤ T ≤ 10^3$。
$0 \leq A[i] < 2^{60}$。
$2 ≤ N ≤ 2 × 10^5$。
所有测试用例的 $N$ 的总和不超过 $2 × 10^5$。