#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC optimize("unroll-loops,no-stack-protector")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
 
using namespace __gnu_pbds;
using namespace std;
 
template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
 
typedef long long ll;
typedef long double ld;
typedef pair<long long ,long long> ii; 

ll m = 1e9+7;
 
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	ll n;
	cin >>n;
	vector <ll> arr(60,0);
	for (int z=0;z<n;z++){
		ll temp;
		cin >> temp;
		for (int x=0;x<60;x++){
			if (temp & ll(1) << x){
				arr[x]++;
			}
		}
	}
	ll i = 1;
	ll ans = 0;
	for (int z=0;z<60;z++){
		ans += (((i*arr[z])%m)*(n-arr[z]))%m;
		ans %= m;
		i *= 2;
	}
	cout << ans << endl;
}
