#include #define all(x) begin(x), end(x) using namespace std; using i32 = int; using i64 = long long; using ld = long double; template inline bool chmax(T1 &a, T2 b) {return a < b and (a = b, true);} template inline bool chmin(T1 &a, T2 b) {return a > b and (a = b, true);} const i64 supl = LONG_LONG_MAX / 2 - 100; const i32 supi = INT_MAX / 2 - 100; void main_() { i32 n; cin >> n; vector as(n, 0); for (auto& a : as) { cin >> a; } if (n >= 15) { cout << (1 << 16) - 1 << endl; exit(0); } vector dp(n + 1, vector((1 << 16), false)); dp[0][0] = true; for (i32 i = 0 ; i < n ; i++) { for (i32 j = 0 ; j < (1 <<16) ; j++) { if (!dp[i][j]) { continue; } dp[i + 1][j] = true; for (i32 k = 0 ; k < 16 ; k++) { dp[i + 1][j | as[i]] = true; as[i] = (as[i] / 2) + (1 << 15) * (as[i] % 2); } } } i32 ans = 0; for (i32 i = 0 ; i < (1 << 16) ; i++) { if (!dp.back()[i]) { continue; } ans = i; } cout << ans << endl; } int main() { ios::sync_with_stdio(false); std::cin.tie(nullptr); main_(); return 0; }