#include <bits/stdc++.h>
using namespace std;
struct BIT {
  vector<long long> tree;
  BIT(int n) : tree(n + 2) {}
  void upd(int p, long long v) {
    for (int i = ++p; i < tree.size(); i += i & -i) tree[i] += v;
  }
  long long get(int p) {
    long long sum = 0;
    for (int i = ++p; i; i -= i & -i) sum += tree[i];
    return sum;
  }
  long long query(int l, int r) {
    if (r < l) return 0;
    return get(r) - get(l - 1);
  }
};
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int n;
  cin >> n;
  vector<int> a(n);
  for (int &x : a) cin >> x;
  int ans = 0;
  for (int b = 24; b >= 0; b--) {
    int sz = 1 << (b + 1);
    BIT bit(sz);
    int pairs = 0;
    int sum_r = (1 << (b + 1)) - 1;
    int sum_l = (1 << b);
    int sum_rr = sum_r + (1 << (b + 1));
    int sum_ll = sum_l + (1 << (b + 1));
    for (int i = 0; i < n; i++) {
      a[i] %= (1 << (b + 1));
      int b_r = sum_r - a[i];
      int b_l = max(0, sum_l - a[i]);
      int b_rr = min(sum_rr - a[i], sz);
      int b_ll = min(sum_ll - a[i], sz);
      pairs += bit.query(b_l, b_r);
      pairs += bit.query(b_ll, b_rr);
      pairs -= bit.query(b_ll, b_r);
      pairs %= 2;
      bit.upd(a[i], 1);
    }
    if (pairs % 2 == 1) ans += 1 << b;
  }
  cout << ans;
}
