#include <bits/stdc++.h>
using namespace std;
int n;
int cnt = 80;
vector<long long> vec;
long long mod = 1e9 + 7;
long long solve() {
  vector<vector<int>> sum_zero(n + 1, vector<int>(cnt, 0));
  vector<vector<int>> sum_one(n + 1, vector<int>(cnt, 0));
  long long ans = 0;
  for (int i = 1; i < n + 1; i++) {
    for (int j = 0; j < cnt; j++) {
      if (vec.at(i - 1) >> j & 1) {
        sum_one.at(i).at(j) = sum_one.at(i - 1).at(j) + 1;
        sum_zero.at(i).at(j) = sum_zero.at(i - 1).at(j);
      } else {
        sum_one.at(i).at(j) = sum_one.at(i - 1).at(j);
        sum_zero.at(i).at(j) = sum_zero.at(i - 1).at(j) + 1;
      }
    }
  }
  for (int i = 0; i < n - 1; i++) {
    long long t = 1;
    for (int j = 0; j < cnt; j++) {
      if (vec.at(i) >> j & 1) {
        ans += (sum_zero.at(n).at(j) - sum_zero.at(i + 1).at(j)) * t;
      } else {
        ans += (sum_one.at(n).at(j) - sum_one.at(i + 1).at(j)) * t;
      }
      ans %= mod;
      t *= 2;
    }
  }
  return ans;
}
long long solve_test() {
  long long ans = 0;
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++) {
      ans += (vec.at(i) ^ vec.at(j));
      ans %= mod;
    }
  return ans;
}
int main() {
  cin >> n;
  vec.resize(n);
  for (int i = 0; i < n; i++) cin >> vec.at(i);
  cout << solve() << endl;
  return 0;
}
