n = int(eval(input()))

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

MOD = 10 ** 9 + 7



ans = 0

m = 1



for i in range(60):

    #mbit目に情報を持つものをすべて足し合わせる。

    #m = 1: 1bit目（2^0の位）、m=10: 2bit目（2^1の位）

    #sum = sigma(1の数 * 2^(m-1))

    one = sum(a_e & m for a_e in a)

    one //= m

    zero = n - one

    ans += one * zero * m

    ans %= MOD

    

    m <<= 1



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(60):

    one = np.count_nonzero(a >> i & 1)

    zero = n - one

    ans += one * zero * 2 ** i

    ans %= MOD



print(ans)
n = int(eval(input()))
a = list(map(int, input().split()))
MOD = 10**9 + 7
ans = 0
m = 1
for i in range(60):
    # mbit目に情報を持つものをすべて足し合わせる。
    # m = 1: 1bit目（2^0の位）、m=10: 2bit目（2^1の位）
    # sum = sigma(1の数 * 2^(m-1))
    one = sum(a_e & m for a_e in a)
    one //= m
    zero = n - one
    ans += one * zero * m
    ans %= MOD
    m <<= 1
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(60):
    one = np.count_nonzero(a >> i & 1)
    zero = n - one
    ans += one * zero * 2**i
    ans %= MOD
print(ans)

+import numpy as np + -a = list(map(int, input().split())) +a = np.array(list(map(int, input().split()))) -m = 1 -    # mbit目に情報を持つものをすべて足し合わせる。 -    # m = 1: 1bit目（2^0の位）、m=10: 2bit目（2^1の位） -    # sum = sigma(1の数 * 2^(m-1)) -    one = sum(a_e & m for a_e in a) -    one //= m +    one = np.count_nonzero(a >> i & 1) -    ans += one * zero * m +    ans += one * zero * 2**i -    m <<= 1