#include<bits/stdc++.h> usingnamespace std; constint maxn=100010; int in[maxn];//记录输入 int n,cnt,ans;//cnt:处理tire的中间遍历 int trie[maxn*32][2];//tire本体,A<2^31,N<10^5
intwork(int s); voidinsert(int s);
intmain(){ // freopen("in.txt","r",stdin); scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&in[i]); insert(in[i]); } for(int i=1;i<=n;i++){ ans=max(ans,work(in[i]));//没有让我们说那两个异或最大只问了结果 } printf("%d",ans); //over return0; } voidinsert(int s){ int root=0; for(int i=31;i>=0;--i){//从高到低 int value=(s>>i)&1;//位运算,取位值 if (!trie[root][value]){ trie[root][value]=++cnt; } root=trie[root][value]; } return ; } intwork(int s){ int root=0,maxn=0; for(int i=31;i>=0;--i){ int value=(s>>i)&1; if (trie[root][!value]){ maxn=(maxn<<1)|1; root=trie[root][!value]; } else { maxn=(maxn<<1); root=trie[root][value]; } } return maxn; }