#include <bits/stdc++.h>
using namespace std;
int si() {
  int x;
  scanf("%d", &x);
  return x;
}
long long sl() {
  long long x;
  scanf("%lld", &x);
  return x;
}
string ss() {
  string x;
  cin >> x;
  return x;
}
void pi(int x) { printf("%d ", x); }
void pl(long long x) { printf("%lld ", x); }
void pd(double x) { printf("%.15f ", x); }
void ps(const string &s) { printf("%s ", s.c_str()); }
void br() { putchar('\n'); }
const int MOD = 1e9 + 7;
struct mint {
  int n;
  mint(int n_ = 0) : n(n_) {}
};
mint operator+(mint a, mint b) {
  a.n += b.n;
  if (a.n >= MOD) a.n -= MOD;
  return a;
}
mint operator-(mint a, mint b) {
  a.n -= b.n;
  if (a.n < 0) a.n += MOD;
  return a;
}
mint operator*(mint a, mint b) { return (long long)a.n * b.n % MOD; }
mint &operator+=(mint &a, mint b) { return a = a + b; }
mint &operator-=(mint &a, mint b) { return a = a - b; }
mint &operator*=(mint &a, mint b) { return a = a * b; }
const int N = 3e5 + 5;
long long n, result;
long long a[N];
vector<int> v[N];
map<pair<int, int>, int> mp;
long long mod(long long a, long long m) { return (a % m + m) % m; }
long long mul(long long a, long long b, long long m) {
  a = mod(a, m);
  b = mod(b, m);
  if (b == 0) return 0;
  long long res = mul(mod(a + a, m), b >> 1, m);
  if (b & 1) res = mod(res + a, m);
  return res;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n;
  for (int i = 0; i < (n); i++) cin >> a[i];
  for (int i = 0; i < (n - 1); i++)
    for (int j = i + 1; j < n; j++) {
      result = (result + (a[i] ^ a[j])) % MOD;
    }
  cout << result << endl;
}
