#include <bits/stdc++.h>
using namespace std;
const int M = 1e9 + 7;
const int INF = 1e9;
const int MAX_V = 1000 + 5;
const int MAX_N = 1e5 + 5;
int MOD = 1e9 + 7;
long modpow(long m, long p) {
  if (p == 0) return 1;
  if (p % 2)
    return m * modpow(m, p - 1) % MOD;
  else {
    long res = modpow(m, p / 2);
    return res * res % MOD;
  }
}
int main() {
  long long n;
  cin >> n;
  vector<long long> a(n);
  for (int i = 0; i < (int)(n); i++) {
    cin >> a[i];
  }
  long long ans = 0;
  sort(a.begin(), a.end(), greater<int>());
  long long max = a[0];
  long long k = ceil(log2(max));
  for (long long i = 1; i <= k; i++) {
    long long cnt_zero = 0;
    long long cnt_one = 0;
    for (auto e : a) {
      if (e & (1 << (i - 1)))
        cnt_one += 1;
      else
        cnt_zero += 1;
    }
    ans += ((((cnt_one) % M) * ((cnt_zero) % M) % M) * modpow(2, i - 1)) % M;
    ans %= M;
  }
  cout << ans << endl;
}
