#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = double;
using pi = pair<int, int>;
using pll = pair<ll, ll>;
using pld = pair<ld, ld>;
using ti3 = tuple<int, int, int>;
using vi = vector<int>;
using vll = vector<ll>;
using vld = vector<ld>;
using vpi = vector<pi>;
using vpll = vector<ll>;
using vpld = vector<ld>;
using vti3 = vector<ti3>;
const double EPS = 1e-9;
const int inf = numeric_limits<int>::max();
ll pow(ll base, ll i, ll mod) {
  ll a = 1;
  while (i) {
    if (i & 1) {
      a *= base;
      a %= mod;
    }
    base *= base;
    base %= mod;
    i >>= 1;
  }
  return a;
}
ll gcd(ll a, ll b) {
  while (b) {
    ll c = a % b;
    a = b;
    b = c;
  }
  return a;
}
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; }
template <typename T>
bool chmin(T& a, const T& b) {
  if (a > b)
    return a = b, true;
  else
    return false;
}
template <typename T>
bool chmax(T& a, const T& b) {
  if (a < b)
    return a = b, true;
  else
    return false;
}
void solve() {
  const ll mod = 1000000000 + 7;
  ll N;
  cin >> N;
  ll A[3 * 100000 + 5];
  for (int i = 0; i < int(N); ++i) cin >> A[i];
  cout << "Read Complete!!" << endl;
  ll zeros[61] = {};
  ll ones[61] = {};
  for (int i = 0; i < int(N); ++i) {
    for (int j = 0; j < int(61); ++j) {
      if (A[i] & (1LL << j))
        ones[j]++;
      else
        zeros[j]++;
    }
  }
  ll ans = 0;
  for (int i = 0; i < int(61); ++i) {
    ans += (((zeros[i] * ones[i]) % mod) * ((1ll << i) % mod)) % mod;
    ans %= mod;
  }
  cout << ans << endl;
}
int main() {
  cin.tie(NULL);
  solve();
  return 0;
}
