voidinsert(char str[]){ int p = 0; for(int i = 0; str[i]; i ++) { int u = str[i] - 'a'; if(! son[p][u]) son[p][u] = ++ idx; p = son[p][u]; } cnt[p] ++; }
intquery(char str[]){ int p = 0; for(int i = 0; str[i]; i ++) { int u = str[i] - 'a'; if(! son[p][u]) return0; p = son[p][u]; } return cnt[p]; }
constint N = 100010, M = 3100010; int nums[N], n, son[M][2], idx;
voidinsert(int a){ int p = 0; for(int i = 30; ~i; i --) { int u = a >> i & 1; if(! son[p][u]) son[p][u] = ++ idx; p = son[p][u]; } }
intquery(int a){ int p = 0; int res = 0; for(int i = 30; ~i; i --) { int u = a >> i & 1; if(son[p][!u]) { res += 1 << i; p = son[p][!u]; } else { p = son[p][u]; } } return res; }
intmain(){ scanf("%d", &n); for(int i = 0 ;i < n; i ++) { scanf("%d", &nums[i]); insert(nums[i]); } int res = 0; for(int i = 0; i < n; i ++) res = max(res, query(nums[i])); printf("%d", res); return0; }