#include <bits/stdc++.h>
using namespace std;
typedef vector<vector<long long>> matrix;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
bool bit(long long subset, long long Rsift) {
  return ((subset) >> (Rsift)) & 1;
}
long long XOR(long long a, long long b) {
  long long res = 0;
  for (long long i = 0; i < (60); i++) {
    res += (bit(a, i) != bit(b, i)) << i;
  }
  return res;
}
long long XORSUM_allarray(vector<long long> A, long long mod) {
  long long N = A.size(), res = 0;
  for (long long digit = 0; digit < (60); digit++) {
    long long cnt1 = 0;
    for (long long i = 0; i < (N); i++) {
      cnt1 += bit(A[i], digit);
    }
    res += cnt1 * (N - cnt1) * (1LL << digit);
    res %= mod;
  }
  return res;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  long long N;
  cin >> N;
  vector<long long> A(N);
  for (long long i = 0; i < (N); i++) cin >> A[i];
  cout << XORSUM_allarray(A, 1000000007) << "\n";
}
