1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cstdlib>
5 using namespace std;
6
7 int tom,root,wi;
8 typedef struct node
9 {
10 int a[2];
11 int i;
12 int num;
13 }Tril;
14 Tril f[100003<<5];
15
16 void insert(int x,int rt,int wz)
17 {
18 int i,k;
19 for(i=21;i>=0;i--)
20 {
21 k=( (1<<i)&x )? 1:0;
22 if(f[rt].a[k]!=-1)
23 f[rt].a[k]=root++;
24 rt=f[rt].a[k];
25 }
26 f[rt].i=wz;
27 f[rt].num=x;
28 }
29 void query(int x,int rt,int wz)
30 {
31 int i,k,cur;
32 for(i=21;i>=0;i--)
33 {
34 k=( (1<<i)&x )? 1:0;
35 if(f[rt].a[k^1]!=-1)
36 rt=f[rt].a[k^1];
37 else rt=f[rt].a[k];
38 }
39 cur=f[rt].num;
40 if( (cur^x)>tom )
41 {
42 tom=cur^x;
43 wi=i;
44 }
45 }
46
47 int main()
48 {
49 int T,n;
50 int i,hxl,x;
51 scanf("%d",&T);
52 while(T--)
53 {
54 scanf("%d",&n);
55 hxl=0;
56 tom=0;
57 root=1;
58 memset(f,-1,sizeof(Tril)*((n<<5)+1));
59 for(i=1;i<=n;i++)
60 {
61 scanf("%d",&x);
62 hxl=hxl^x;
63 query(hxl,1,i);
64 insert(hxl,1,i);
65 }
66 printf("%d\n",tom);
67 }
68 return 0;
69 }