// mokre tricko #include using namespace std; #define LSOne(S) ((S) & -(S)) int main() { int n; scanf("%d", &n); vector nums(n); vector occ(70, 0); long long summ = 0; for (int i = 0; i < n; i++) { scanf("%ld", &nums[i]); summ += nums[i]; long long mm = nums[i]; while (mm != 0) { long long r = LSOne(mm); int c = __builtin_ctz(r); occ[c]++; mm -= r; } } // long long mm = summ; // while (mm != 0) { // long long r = LSOne(mm); // int c = __builtin_ctz(r); // occ[c]++; // mm -= r; // } for (int i = 0; i < occ.size() - 1; ++i) { occ[i+1] += occ[i] / 2; } long long ans = 0; for (int i = 0; i < occ.size() - 1; ++i) if (occ[i] > 0) { ans |= 1ll << i; } // long long ans = 0; // long long subsetsum = 0; // for (int i = 0; i < n; ++i) { // subsetsum += nums[i]; // ans = ans | subsetsum; // } printf("%ld\n", ans); return 0; }