#include <bits/stdc++.h>   using namespace std;   const int N = 1e6 + 5;   long long le[N], ri[N], mid, lee, rii;   long long a[N], b[N], c[N], mp[35], ans, n, answ, idx, idx1, pw[35], bb;   int main() {     std::ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> a[i];     }     pw[0] = 1;     for (int i = 1; i <= 35; i++) {       pw[i] = pw[i - 1] * 2;     }     for (int i = 0; i <= 30; i++) {       for (int j = 1; j <= n; j++) {         b[j] += a[j] & pw[i];         c[j] = b[j];       }       std::stable_sort(c + 1, c + n + 1);       idx = n;       for (int j = 1; j <= n; j++) {         idx = max(idx, j + 1LL);         bb = 0;         while (c[j] + c[idx] >= pw[i] && idx > j) {           idx--;           bb = 1;         }         if (bb == 1) idx++;         if (c[j] + c[idx] < pw[i] || idx > n)           le[j] = -1;         else           le[j] = idx;       }       idx = n;       for (int j = 1; j <= n; j++) {         idx = max(idx, j + 1LL);         while (c[j] + c[idx] >= pw[i + 1] && idx > j + 1) {           idx--;         }         if (c[j] + c[idx] >= pw[i + 1] || idx > n)           ri[j] = -1;         else           ri[j] = idx;       }       for (int j = 1; j <= n; j++) {         if (le[j] != -1 && ri[j] != -1) mp[i] += ri[j] - le[j] + 1;       }       idx = n;       for (int j = 1; j <= n; j++) {         idx = max(idx, j + 1LL);         bb = 0;         while (c[j] + c[idx] >= pw[i + 1] + pw[i] && idx > j) {           bb = 1;           idx--;         }         if (bb == 1) idx++;         if (c[j] + c[idx] < pw[i + 1] + pw[i] || idx > n)           le[j] = -1;         else           le[j] = idx;       }       idx = n;       for (int j = 1; j <= n; j++) {         idx = max(idx, j + 1LL);         while (c[j] + c[idx] >= pw[i + 2] && idx > j + 1) {           idx--;         }         if (c[j] + c[idx] >= pw[i + 2] || idx > n)           ri[j] = -1;         else           ri[j] = idx;       }       for (int j = 1; j <= n; j++) {         if (le[j] != -1 && ri[j] != -1) mp[i] += ri[j] - le[j] + 1;       }     }     for (int i = 0; i <= 30; i++) {       if (mp[i] % 2) answ += (1LL << i);     }     cout << answ << endl;   }   