// yukicoder: No.130 XOR Minimax // 2019.8.7 bal4u #include #include #if 1 #define gc() getchar_unlocked() #else #define gc() getchar() #endif int in() { // 非負整数の入力 int n = 0, c = gc(); do n = 10 * n + (c & 0xf); while ((c = gc()) >= '0'); return n; } int a[100005]; int calc(int sz, int *a, int b) { int *u, *v, wu, wv, i, ans; if (b < 0 || sz == 1) return 0; if (sz == 2) { return ((a[0] >> b) ^ (a[1] >> b))? 1<> b) & 1) u[wu++] = a[i]; else v[wv++] = a[i]; } if (wu == 0 || wv == 0) { // free(u), free(v); ans = calc(sz, a, b-1); } else { ans = calc(wu, u, b-1); int t = calc(wv, v, b-1); if (t < ans) ans = t; ans |= 1< ma) ma = a[i]; } i = -1; while (ma) ma >>= 1, i++; printf("%d\n", calc(N, a, i)); return 0; }