#include <bits/stdc++.h>
using namespace std;
string to_string(string s) { return "\"" + s + "\""; }
template <typename T>
string to_string(vector<T>);
template <typename U, typename V>
string to_string(pair<U, V> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename T>
string to_string(vector<T> v) {
  string r = "[";
  for (int i = 0; i < (int)v.size() - 1; i++) r += to_string(v[i]) + ", ";
  if (!v.empty()) r += to_string(v.back());
  return r + "]";
}
const int N = (int)1e6 + 1000;
int p[N], f[N], n;
int calc(int k) {
  int x = n / k, y = n % k, res = 0;
  if (x & 1) res = f[k - 1];
  res ^= f[y];
  return res;
}
int calc() {
  int res = 0;
  for (int i = 1; i <= n; i++) res ^= calc(i);
  return res;
}
int main() {
  f[0] = 0;
  for (int i = 1; i < N; i++) f[i] = i ^ f[i - 1];
  scanf("%d", &n);
  int ans = calc();
  for (int i = 0; i < n; i++) scanf("%d", &p[i]);
  for (int i = 0; i < n; i++) ans ^= p[i];
  printf("%d\n", ans);
}
