#include <bits/stdc++.h>
using namespace std;
struct Init {
  Init() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    cout.precision(20);
    cout << fixed;
  }
} init;
template <typename _Ty>
ostream& operator<<(ostream& ostr, const vector<_Ty>& v) {
  for (int i = 0; i < (int)v.size(); i++) {
    ostr << v[i] << (i + 1 != v.size() ? " " : "");
  }
  return ostr;
}
int gcd(int a, int b) {
  if (a < b) a, b = b, a;
  if (a % b == 0) return b;
  return gcd(b, a % b);
}
const long long mod = 1000000007;
int main() {
  int N;
  cin >> N;
  long long L[N];
  for (int i = 0; i < N; i++) cin >> L[i];
  long long ans = 0;
  for (int i = 0; i < N; i++) {
    for (int j = i + 1; j < N; j++) {
      ans += (L[i] ^ L[j]) % mod;
    }
  }
  cout << ans % mod << endl;
}
