#include <bits/stdc++.h>
using ll = int64_t;
using namespace std;
template <int mod>
struct modint {
  ll x;
  modint(ll x = 0) : x((x % mod + mod) % mod) {}
  modint operator-() const { return modint(mod - x); }
  modint inv() const { return this->pow(mod - 2); }
  modint& operator+=(const modint& a) {
    if ((x += a.x) >= mod) x -= mod;
    return *this;
  }
  modint& operator-=(const modint& a) {
    if ((x -= a.x) < 0) x += mod;
    return *this;
  }
  modint& operator*=(const modint& a) {
    (x *= a.x) %= mod;
    return *this;
  }
  modint& operator/=(const modint& a) { return *this *= a.inv(); }
  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 pow(ll n) const {
    auto x = modint(1);
    auto m = *this;
    while (n > 0) {
      if (n & 1) x *= m;
      n >>= 1;
      m *= m;
    }
    return x;
  }
  bool operator==(const modint& a) const { return x == a.x; }
  bool operator!=(const modint& a) const { return x != a.x; }
  friend istream& operator>>(istream& is, modint& a) noexcept {
    return is >> a.x;
  }
  friend ostream& operator<<(ostream& os, const modint& a) noexcept {
    return os << a.x;
  }
};
constexpr int mod = 1e9 + 7;
using mint = modint<mod>;
int main() {
  int n;
  cin >> n;
  vector<ll> p(n);
  for (int i = 0; i < (n); ++i) cin >> p[i];
  mint ans = 0;
  for (int i = 0; i < (60); ++i) {
    int cnt = 0;
    for (int j = 0; j < (n); ++j) {
      if (p[j] >> i & 1) cnt++;
    }
    mint a(cnt * (n - cnt));
    a *= mint(2).pow(i);
    ans += a;
  }
  cout << ans << endl;
  return 0;
}
