#include<iostream>
#include<cmath>
#include<map>
#include<deque>
#include<string>
#include<algorithm>
#include<bitset>
typedef long long ll;

#define all(x) (x).begin(),(x).end()
#define puts(x) cout<< x << endl;
#define rep(i,m,n) for(ll i=m;i<n;i++)
#define fore(i,a) for(auto i:a)
const ll MOD= 1000000007;
using namespace std;
ll n;
ll a[300005];
int main(){
    cin>>n;
    rep(i,0,n){
        cin>>a[i];
    }
    ll ans=0;
    rep(t,0,61){//すべてのけたについて考える
        ll zero=0,one=0;
        rep(i,0,n){
            if(a[i]>>t&1){
                one+=1;
            }else{
                zero+=1;
            }
            
        }
        ll c=(one*zero)%MOD;
        ans+=((ll(pow(2,t))%MOD)*c)%MOD;
        ans=ans%MOD;
    }
    puts(ans);
}
#include<iostream>
#include<cmath>
#include<map>
#include<deque>
#include<string>
#include<algorithm>
#include<bitset>
typedef long long ll;

#define all(x) (x).begin(),(x).end()
#define puts(x) cout<< x << endl;
#define rep(i,m,n) for(ll i=m;i<n;i++)
#define fore(i,a) for(auto i:a)
const ll MOD= 1000000007;
using namespace std;
ll n;
ll a[300005];
int main(){
    cin>>n;
    rep(i,0,n){
        cin>>a[i];
    }
    ll ans=0;
    rep(t,0,61){//すべてのけたについて考える
        ll zero=0,one=0;
        rep(i,0,n){
            if(a[i]>>t&1){
                one+=1;
            }else{
                zero+=1;
            }
            
        }
        ll c=(one*zero)%MOD;
        ans+=((ll(pow(2,t))%MOD)*c)%MOD;
        ans=ans%MOD;
    }
    puts(ans);
}
