#include <bits/stdc++.h>
using namespace std;
const long long INF = 1LL << 60;
const int MOD = 1000000000 + 7;
template <typename tuple<long long, long long, long long> >
inline string toString(const tuple<long long, long long, long long> &a) {
  ostringstream oss;
  oss << a;
  return oss.str();
};
long long a[300010];
long long cumsum[65][300010], cnt[65];
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < (n); i++) cin >> a[i];
  for (int i = 0; i < (64); i++) {
    for (int j = 0; j < (n); j++) {
      if ((a[j] >> i) & 1)
        cumsum[i][j + 1] = cumsum[i][j] + 1;
      else
        cumsum[i][j + 1] = cumsum[i][j];
    }
  }
  for (int i = 0; i < (n - 1); i++) {
    for (int j = 0; j < (64); j++) {
      if ((a[i] >> j) & 1) {
        long long num = (n - cumsum[j][n] - (i + 1) + cumsum[j][i + 1]);
        cnt[j] += num;
      } else {
        cnt[j] += (cumsum[j][n] - cumsum[j][i + 1]);
      }
    }
  }
  long long ans = 0;
  for (int i = 0; i < (64); i++) {
    for (int j = 0; j < (cnt[i]); j++) {
      ans = (ans + (1LL << i)) % MOD;
    }
  }
  cout << ans % MOD << endl;
}
