#include <bits/stdc++.h>
using namespace std;
using lli = long long int;
template <class T>
ostream &operator<<(ostream &o, const vector<T> &v) {
  o << "{";
  for (int i = 0; i < (int)v.size(); i++) o << (i > 0 ? ", " : "") << v[i];
  o << "}";
  return o;
}
template <class T>
ostream &operator<<(ostream &o, const pair<T, T> &p) {
  o << "(" << p.first << ", " << p.second << ")";
  return o;
}
const lli MOD = 1000000007LL;
lli modpow(lli a, lli n) {
  lli res = 1;
  for (lli ai = a; n; n >>= 1) {
    if (1 & n) res = (res * ai) % MOD;
    ai = (ai * ai) % MOD;
  }
  return res;
}
lli inv(lli n) { return modpow(n, MOD - 2); }
lli modperm(lli n, lli k) {
  lli res = 1;
  for (lli i = 0; i < (lli)(k); i++) {
    res = (res * (n - i)) % MOD;
  }
  return res;
}
lli modcomb(lli n, lli k) { return (modperm(n, k) * inv(modperm(k, k))) % MOD; }
lli posmod(lli n) {
  lli res = n;
  res %= MOD;
  if (res < 0) res += MOD;
  return res;
}
const int MAX_N = 300000;
const int MAX_J = 61;
int n;
int A[MAX_N][MAX_J];
int K[MAX_J];
lli tmp;
int main(void) {
  cin >> n;
  for (lli i = 0; i < (lli)(n); i++) {
    cin >> tmp;
    for (lli j = 0; j < (lli)(60); j++) {
      A[i][j] = tmp % 2;
      tmp = tmp / 2;
    }
  }
  for (lli i = 0; i < (lli)(n); i++) {
    for (lli j = 0; j < (lli)(60); j++) {
      K[j] = max(A[i][j], K[j] + A[i][j]);
    }
  }
  lli res = 0;
  for (lli j = 0; j < (lli)(60); j++) {
    lli x = K[j] * (n - K[j]);
    for (lli i = 0; i < (lli)(j); i++) (x *= 2) %= MOD;
    (res += x) %= MOD;
  }
  cout << res << endl;
  return 0;
}
