#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; #define MOD 1000000007 #define INF 1LL << 59 using ld = long double; int N; int arr[15]; int maxV = 0; vector> vp; void dfs(int d, bool used[15], vector v) { if (d == N / 2) { int sum = 0; for (int i = 0; i < (int)v.size(); ++i) { sum = sum ^ v[i]; } maxV = max(maxV, sum); return; } for (int i = 0; i < (int)vp.size(); ++i) { if (!used[vp[i].first] && !used[vp[i].second]) { used[vp[i].first] = true; used[vp[i].second] = true; v.push_back(arr[vp[i].first] + arr[vp[i].second]); dfs(d + 1, used, v); v.pop_back(); used[vp[i].first] = false; used[vp[i].second] = false; } } } int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); //cout << fixed << setprecision(5); cin >> N; for (int i = 0; i < N; ++i) cin >> arr[i]; for (int i = 0; i < N; ++i) { for (int j = i + 1; j < N; ++j) { vp.push_back({i, j}); } } bool used[N]; for (int i = 0; i < N; ++i) used[i] = false; vector v; dfs(0, used, v); cout << maxV << endl; return 0; }