#include #include #include #include #include using namespace std; typedef long long int ll; int ans=(1<<30); templatestruct Trie{ int nex[MX][2],sz[MX],num=0; // num is last node in trie Trie(){ for(int i=0;i=0;i--){ int t=(x>>i)&1; if(!nex[cur][t]){ num++; nex[cur][t]=num; } sz[cur=nex[cur][t]]+=a; } } void dfs(int a,int b,int res=0){ if(b==-1){ ans=min(ans,res); return; } if(nex[a][0]&&nex[a][1]){ for(int i=0;i<2;i++){ dfs(nex[a][i],b-1,res^(1< T; int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n; cin >> n; vector a(n); for(int i=0;i> a[i]; T.ins(a[i]); } T.dfs(0,29); cout << ans << endl; }