#XORはビットごとに独立しているので各ビットで0*1の演算回数を数える

n=int(eval(input()))

A=list(map(int,input().split()))

B=[0]*62 #1の個数カウント

mod=10**9+7



for i in range(n):

    a=bin(A[i])

    for j in range(len(a)-2):

        if a[-j-1]=="1":

            B[-j-1]+=1



ans=0

cnt=1 #2の累乗管理

for b in range(len(B)):

    prd=B[-b-1]*(n-B[-b-1])

    ans+=prd*cnt%mod

    cnt*=2

    ans%=mod

    cnt%=mod

print(ans)
import numpy as np



n=int(eval(input()))

A=np.array(list(map(int,input().split())))

mod=10**9+7



ans=0

for i in range(62):

    cnt=np.count_nonzero(A&1) #1とのANDで一番右の桁を抽出

    ans+=cnt*(n-cnt)*(2**i)%mod

    ans%=mod

    A=A>>1 #ビットシフト

print(ans)
# XORはビットごとに独立しているので各ビットで0*1の演算回数を数える
n = int(eval(input()))
A = list(map(int, input().split()))
B = [0] * 62  # 1の個数カウント
mod = 10**9 + 7
for i in range(n):
    a = bin(A[i])
    for j in range(len(a) - 2):
        if a[-j - 1] == "1":
            B[-j - 1] += 1
ans = 0
cnt = 1  # 2の累乗管理
for b in range(len(B)):
    prd = B[-b - 1] * (n - B[-b - 1])
    ans += prd * cnt % mod
    cnt *= 2
    ans %= mod
    cnt %= mod
print(ans)

import numpy as np

n = int(eval(input()))
A = np.array(list(map(int, input().split())))
mod = 10**9 + 7
ans = 0
for i in range(62):
    cnt = np.count_nonzero(A & 1)  # 1とのANDで一番右の桁を抽出
    ans += cnt * (n - cnt) * (2**i) % mod
    ans %= mod
    A = A >> 1  # ビットシフト
print(ans)

-# XORはビットごとに独立しているので各ビットで0*1の演算回数を数える +import numpy as np + -A = list(map(int, input().split())) -B = [0] * 62  # 1の個数カウント +A = np.array(list(map(int, input().split()))) -for i in range(n): -    a = bin(A[i]) -    for j in range(len(a) - 2): -        if a[-j - 1] == "1": -            B[-j - 1] += 1 -cnt = 1  # 2の累乗管理 -for b in range(len(B)): -    prd = B[-b - 1] * (n - B[-b - 1]) -    ans += prd * cnt % mod -    cnt *= 2 +for i in range(62): +    cnt = np.count_nonzero(A & 1)  # 1とのANDで一番右の桁を抽出 +    ans += cnt * (n - cnt) * (2**i) % mod -    cnt %= mod +    A = A >> 1  # ビットシフト