题目描述

一个长度为 $n$ 的数组 $a$ $(1 \le n \le 3e5, 0 \le a_i \le 1e9)$ ,当 $n \gt 2$ 时,你可以至多进行一次以下操作:

选择一个下标$i (1 \le i \le n - 2)$,交换 $ a[i]$, $ a[i+2] $ 这两个数的位置。

求该数组的子数组$^{[1]}$的异或和$^{[2]}$的最大值。

bitwim还不会做这题,你能帮帮他吗?

[1]数组a是数组b的子数组,当且仅当数组a能通过数组b删除最前面的若干个数(或不删除)及删除最后面若干个数(或不删除)得到。(数组a的长度至少为1)

[2]异或和:当我们谈到异或和时,我们指的是一种数学运算,通常用符号 ⊕ 表示。异或和是指对两个数的每一位进行异或运算得到的结果。在二进制中,异或运算的规则是:如果两个对应位的数字相同,则结果为0;如果两个对应位的数字不同,则结果为1。
例如,考虑两个二进制数 1010 和 1100,它们分别表示十进制下的10和12。它们的异或结果即为0110,即十进制下的6。


输入格式

输入由多组样例组成。

第一行包含一个整数$t$ $(1 \le t \le 300000)$,表示样例数量。

每一个测试样例的第一行包含一个整数$n$ $(1 \le n \le 300000)$,表示数组大小。

每一个测试样例的第二行包含$n$个整数$a_1,...,a_n$ $(0 \le a_i \le 1e9)$,表示数组a。

保证$n$的总和不会超过300000。


输出格式

对于每个样例,输出一行数表示答案。


样例数据

输入

2
2
2 3
4
0 4 5 3

输出

3
7

备注

对于第一个测试用例,不能进行操作。

对于第二个测试用例,可以交换第一个数和第三个数,数组变为[5 4 0 3],此时取子数组[4 0 3]异或和最大。


操作

评测记录

优秀代码

信息

时间限制: 3s
内存限制: 512MB
评测模式: Normal

题解