#include <bits/stdc++.h>
using namespace std;
using P = pair<long long, long long>;
using Pll = pair<P, long long>;
using PQ = priority_queue<P, vector<P>, greater<P>>;
const long long MOD = 1e9 + 7;
template <long long MOD>
struct modint {
  long long x;
  modint() : x(0) {}
  modint(long long a) : x((a % MOD + MOD) % MOD) {}
  bool operator!() const { return !x; }
  bool operator<(const modint &a) const {
    modint res(*this);
    return res.x < a.x;
  }
  bool operator>(const modint &a) const {
    modint res(*this);
    return res.x > a.x;
  }
  modint &operator+=(const modint &a) {
    if ((x += a.x) >= MOD) x -= MOD;
    return *this;
  }
  modint &operator-=(const modint &a) {
    if ((x += MOD - a.x) >= MOD) x -= MOD;
    return *this;
  }
  modint &operator*=(const modint &a) {
    (x *= a.x) %= MOD;
    return *this;
  }
  modint &operator/=(const modint &a) {
    *this *= a.inv();
    return *this;
  }
  modint &operator%=(const modint &a) {
    x %= a.x;
    return *this;
  }
  modint operator-() const { return modint(-x); }
  modint operator+(const modint &a) const { return modint(*this) += a; }
  modint operator-(const modint &a) const { return modint(*this) -= a; }
  modint operator*(const modint &a) const { return modint(*this) *= a; }
  modint operator/(const modint &a) const { return modint(*this) /= a; }
  modint operator%(const modint &a) const { return modint(*this) %= a; }
  bool operator==(const modint &a) const { return x == a.x; }
  bool operator!=(const modint &a) const { return x != a.x; }
  modint pow(long long n) const {
    modint res(1), a(x);
    while (n > 0) {
      if (n & 1) res *= a;
      a *= a;
      n /= 2;
    }
    return res;
  }
  modint inv() const { return this->pow(MOD - 2); }
  friend ostream &operator<<(ostream &os, const modint &m) { return os << m.x; }
  friend istream &operator>>(istream &is, modint &m) {
    long long t;
    is >> t;
    m = modint<MOD>(t);
    return (is);
  }
  static long long get_mod() { return MOD; }
};
using mint = modint<MOD>;
signed main() {
  long long n;
  cin >> n;
  long long cnt[60] = {};
  for (long long i = 0; i < n; i++) {
    long long a;
    cin >> a;
    for (long long j = 0; j < 60; j++) {
      cnt[j] += a % 2;
      a /= 2;
    }
  }
  mint ans = 0;
  for (long long i = 0; i < 60; i++) {
    ans += (long long)pow(2, i) * (n - cnt[i]) * cnt[i];
  }
  cout << ans << endl;
  return 0;
}
