#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void chmax(T &a, const T b) {
  a = max(a, b);
}
template <class T>
inline void chmin(T &a, const T b) {
  a = min(a, b);
}
template <class T>
void pp(T v, int n) {
  for (int i = 0; i < (int)(n); i++) cout << v[i] << ' ';
  cout << endl;
}
const long long MOD = 1000 * 1000 * 1000 + 7;
inline void chadd(long long &a, const long long b) { a = (a + b) % MOD; }
inline long long add(const long long a, const long long b) {
  return (a + b) % MOD;
}
inline void chsub(long long &a, const long long b) { a = (a - b + MOD) % MOD; }
inline long long sub(const long long a, const long long b) {
  return (a - b + MOD) % MOD;
}
inline void chmul(long long &a, const long long b) { a = (a * b) % MOD; }
inline long long mul(const long long a, const long long b) {
  return (a * b) % MOD;
}
void inline TorF(bool tf, const string &trueMessage,
                 const string &falseMessage) {
  cout << (tf ? trueMessage : falseMessage) << endl;
}
void inline YESNO(bool tf) { TorF(tf, "YES", "NO"); }
void inline YesNo(bool tf) { TorF(tf, "Yes", "No"); }
int main() {
  int N;
  cin >> N;
  vector<int> cnt(60, 0);
  for (int i = 0; i < (int)(N); i++) {
    long long v;
    cin >> v;
    for (int i = 0; i < (int)(60); i++) {
      cnt[i] += (int)((v >> i) & 1LL);
    }
  }
  long long ans = 0;
  for (int i = 0; i < (int)(60); i++) {
    long long tmp = 1LL << i;
    tmp *= (long long)((N - cnt[i]) * cnt[i]);
    chadd(ans, tmp);
  }
  cout << ans << endl;
  return 0;
}
