#include <bits/stdc++.h>
using namespace std;
const long long big = 1000000007;
const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, 1, 0, -1};
long long max(long long x, long long y) {
  if (x > y)
    return x;
  else
    return y;
}
long long min(long long x, long long y) {
  if (x < y)
    return x;
  else
    return y;
}
long long expm(long long x, long long y) {
  if (y == 0) return 1;
  if (x == 1 || x == 0) return x;
  if (y % 2 == 1) return (expm(x, y - 1) * x) % big;
  long long t = expm(x, y / 2);
  return (t * t) % big;
}
long long exp(long long x, long long y) {
  if (y == 0) return 1;
  if (x == 1 || y == 0) return x;
  if (y % 2 == 1) return exp(x, y - 1) * x;
  long long t = exp(x, y / 2);
  return t * t;
}
long long inv(long long x) { return expm(x, big - 2); }
long long f(vector<long long> &a) {
  vector<long long> sums(61);
  for (int i = 0; i < (int)(a.size()); i++) {
    bitset<61> now(a[i]);
    for (int j = 0; j < (int)(61); j++) {
      sums[j] += now[j];
    }
  }
  long long ans = 0;
  long long pows = 1;
  for (int i = 0; i < (int)(61); i++) {
    ans += pows * (sums[i] * (sums[i] - 1) % big) % big;
    ans %= big;
    pows *= 2;
    pows %= big;
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  cout << fixed << setprecision(10);
  int n;
  cin >> n;
  vector<long long> a(n);
  for (int i = 0; i < (int)(n); i++) cin >> a[i];
  long long ans = 0;
  for (int i = 0; i < (int)(n); i++) ans = (ans + a[i] * (n - 1)) % big;
  cout << ((ans - f(a)) % big + big) % big << endl;
}
