#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int MAXN = 100005;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
long long lcm(long long a, long long b) { return a * b / gcd(a, b); }
long long fpow(long long b, long long exp, long long mod) {
  if (exp == 0) return 1;
  long long t = fpow(b, exp / 2, mod);
  if (exp & 1) return t * t % mod * b % mod;
  return t * t % mod;
}
long long divmod(long long i, long long j, long long mod) {
  i %= mod, j %= mod;
  return i * fpow(j, mod - 2, mod) % mod;
}
long long choose(long long n) { return n * (n - 1) / 2; }
long long BIT[64][3 * MAXN];
int N;
void upd(int idx, int x) {
  for (int i = x; i < 3 * MAXN; i += i & -i) BIT[idx][i]++, BIT[idx][i] %= MOD;
}
long long sum(int idx, int x) {
  int sum = 0;
  for (int i = x; i > 0; i -= i & -i) sum = sum % MOD + BIT[idx][i] % MOD;
  return sum % MOD;
}
int main() {
  scanf("%d", &N);
  for (int i = 1; i <= N; i++) {
    long long x;
    scanf("%lld", &x);
    for (int j = 0; j < 62; j++) {
      if (((x >> (1LL * j)) & 1)) upd(j, i);
    }
  }
  long long ans = 0;
  for (int i = 0; i < 62; i++) {
    long long numOfOnes = (sum(i, N) - sum(i, 0)) % MOD,
              numZeroes = (N - (numOfOnes)) % MOD;
    ans = (ans % MOD + numOfOnes % MOD * numZeroes % MOD * (1LL << i) % MOD);
  }
  printf("%lld\n", ans % MOD);
}
