#include <bits/stdc++.h>
using namespace std;
#define ll  long long int
#define ld long double
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define MOD 1000000007
#define FAST ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);srand(time(NULL));
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 
using namespace __gnu_pbds; 
#define ordered_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update> 
const int N = 100005;
int main()
{
  
   FAST;
   ll n;
   cin >> n;
   ll a[n];
   ll sum = 0;
   for(ll i=0;i<n;i++)
   {
       cin >> a[i];
       sum = ((sum)%MOD + (a[i])%MOD)%MOD;
   }
   ll ans = ((n-1)%MOD*(sum)%MOD)%MOD;
   ll temp=1;
   for(ll i=0;i<=61;i++)
   {
       ll cnt = 0;
       for(ll j=0;j<n;j++)
       {
           if(temp & a[j])  cnt++;
       }
       cnt = (cnt*(cnt-1))/2;
       ans = (ans - (((cnt)%MOD*(temp)%MOD)%MOD*2)%MOD +MOD)%MOD;
       temp *= 2;
   }
   cout<<ans;
}