#1219. 最大化剩余元素

最大化剩余元素

题目描述

给定一个初始包含 nn 个非负整数的数组 aa

你将执行恰好 n1n-1 次以下操作:

  1. 从当前数组 aa 中选择一个下标 ii1ia1 \le i \le |a|,其中 a|a| 表示当前数组的长度),并令 x=aix = a_i
  2. 将当前数组中所有的元素 aja_j1ja1 \le j \le |a|)赋值为 ajxa_j \oplus x,其中 \oplus 表示按位异或运算。
  3. 将选中的元素 aia_i 从数组中删除(此时被删除元素的值为 xx=0x \oplus x = 0)。

可以证明,经过 n1n-1 次操作后,数组中将恰好剩下唯一一个元素。你的任务是找出,在采取最优操作顺序的情况下,这最后一个剩余元素可能达到的最大值

输入格式

第一行包含一个整数 tt1t1001 \le t \le 100)—— 测试用例的数量。

对于每个测试用例:

  • 第一行包含一个整数 nn2n31052 \le n \le 3105)—— 数组初始的长度。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n0ai1090 \le a_i \le 10^9)—— 数组初始的元素。

输出格式

对于每个测试用例,输出一行一个整数,表示经过最优操作后最后剩余元素的最大可能值。

样例输入 1

3
2
67 67
3
1 2 3
10
67 667 167 867 267 467 367 567 767 967

样例输出 1

0
3
1012

说明

样例解释

在第二个测试用例中,初始数组为 [1,2,3][1, 2, 3]。一种最优的操作序列如下:

  1. 选择元素 33(令 x=3x = 3)。将所有元素异或 33 后删除原先的 33。剩余的元素变为 [13,23]=[2,1][1 \oplus 3, 2 \oplus 3] = [2, 1]
  2. 选择元素 22(令 x=2x = 2)。将所有元素异或 22 后删除原先的 22。剩余的元素变为 [12]=[3][1 \oplus 2] = [3]。 最终剩下的值为 33

数据范围

  • 对于所有测试点,保证 1t1001 \le t \le 100
  • 对于每个测试用例,保证 2n31052 \le n \le 3105
  • 对于每个测试用例,保证 0ai1090 \le a_i \le 10^9
  • 保证同一测试点内所有测试用例的 nn 之和不超过 31053105
  • 保证所有的输入数值均为整数。