'''ika tako

bit桁ごとに考える。「XORを取り、その後足し算」という計算過程では

他の桁が影響することはないので、桁毎に独立に考えて問題ない。

N = 5

A = {   1   2   3   4   5 }   ↓

    { 001 010 011 100 101 }

たとえば2桁目を取り出すと

       0   1   1   0   0

各ペアでXORを取ると、(0,1)は'1'となり、(0,0)(1,1)は'0'となる。 

0はいくら足しても0なので、(0,1)の数だけわかれば良い。

それは、(0の個数)×(1の個数)で計算できる。

    0が3個、1が2個

→  XORを取ったとき、2桁目について'1'が立っているペア

　　　　　　　　　　　=合計に足される回数は 3x2=6

→  2進数の2桁目は2を表すので、合計に足される値は6x2=12

これを各桁について足し合わせる。

'''

n = int(eval(input()))

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

 

MOD = 10 ** 9 + 7

ans = 0

m = 1

for _ in range(60):#上限は2＾60なので、60が上限

    bit = sum(a & m for a in aaa)#ｍは何番目のビットが立っているか

    bit //= m

    #bit >>= m これはダメだった。なぜ、だろう？

    non_bit = n - bit

    ans = (ans + bit * non_bit * m) % MOD

    #ｍは上記、2桁目を表す2と同様

    m <<= 1#ビットを１つずつ左シフト

print(ans)



'''

結局この計算は Ai のすべての組み合わせ(Ai 自身同士は含まない)の 

XOR の合計なので、Ai のあるビットの立っている数の合計を c とすると、

Ai のあるビットが0であった場合により計算結果に立つビットの数は 

c、Ai のあるビットが1であった場合により計算結果に立つビットの数は 

N - c になるので、あるビットに関する計算結果は c * (N -c) の

ビットシフトした値になる. 結果として以下の計算で解ける.



N = int(input())

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

 

result = 0

for bit in range(60):

    m = 1 << bit　すべてのビットを調べる

    c = sum(a & m for a in A) >> bit　

    ビット分、戻して、その桁に立っているビット数を算出

    result += (c * (N - c)) << bit　

    ビット分（上記の2桁目の2）調整、イメージとしては2のべき乗倍

    result %= 1000000007

print(result)

'''
'''ika tako

bit桁ごとに考える。「XORを取り、その後足し算」という計算過程では

他の桁が影響することはないので、桁毎に独立に考えて問題ない。

N = 5

A = {   1   2   3   4   5 }   ↓

    { 001 010 011 100 101 }

たとえば2桁目を取り出すと

       0   1   1   0   0

各ペアでXORを取ると、(0,1)は'1'となり、(0,0)(1,1)は'0'となる。 

0はいくら足しても0なので、(0,1)の数だけわかれば良い。

それは、(0の個数)×(1の個数)で計算できる。

    0が3個、1が2個

→  XORを取ったとき、2桁目について'1'が立っているペア

　　　　　　　　　　　=合計に足される回数は 3x2=6

→  2進数の2桁目は2を表すので、合計に足される値は6x2=12

これを各桁について足し合わせる。

'''

n = int(eval(input()))

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

 

MOD = 10 ** 9 + 7

ans = 0

m = 1

for i in range(60):#上限は2＾60なので、60が上限

    bit = sum(a & m for a in aaa)#ｍは何番目のビットが立っているか

    #bit //= m こっちが原文、下の行は、下のプルグラムに合わせたみた

    bit >>= i

    non_bit = n - bit

    ans = (ans + bit * non_bit * m) % MOD

    #ｍは上記、2桁目を表す2と同様

    m <<= 1#ビットを１つずつ左シフト

print(ans)



'''

結局この計算は Ai のすべての組み合わせ(Ai 自身同士は含まない)の 

XOR の合計なので、Ai のあるビットの立っている数の合計を c とすると、

Ai のあるビットが0であった場合により計算結果に立つビットの数は 

c、Ai のあるビットが1であった場合により計算結果に立つビットの数は 

N - c になるので、あるビットに関する計算結果は c * (N -c) の

ビットシフトした値になる. 結果として以下の計算で解ける.



N = int(input())

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

 

result = 0

for bit in range(60):

    m = 1 << bit　すべてのビットを調べる

    c = sum(a & m for a in A) >> bit　

    ビット分、戻して、その桁に立っているビット数を算出

    result += (c * (N - c)) << bit　

    ビット分（上記の2桁目の2）調整、イメージとしては2のべき乗倍

    result %= 1000000007

print(result)

'''
"""ika tako
bit桁ごとに考える。「XORを取り、その後足し算」という計算過程では
他の桁が影響することはないので、桁毎に独立に考えて問題ない。
N = 5
A = {   1   2   3   4   5 }   ↓
    { 001 010 011 100 101 }
たとえば2桁目を取り出すと
       0   1   1   0   0
各ペアでXORを取ると、(0,1)は'1'となり、(0,0)(1,1)は'0'となる。 
0はいくら足しても0なので、(0,1)の数だけわかれば良い。
それは、(0の個数)×(1の個数)で計算できる。
    0が3個、1が2個
→  XORを取ったとき、2桁目について'1'が立っているペア
　　　　　　　　　　　=合計に足される回数は 3x2=6
→  2進数の2桁目は2を表すので、合計に足される値は6x2=12
これを各桁について足し合わせる。
"""
n = int(eval(input()))
aaa = list(map(int, input().split()))
MOD = 10**9 + 7
ans = 0
m = 1
for _ in range(60):  # 上限は2＾60なので、60が上限
    bit = sum(a & m for a in aaa)  # ｍは何番目のビットが立っているか
    bit //= m
    # bit >>= m これはダメだった。なぜ、だろう？
    non_bit = n - bit
    ans = (ans + bit * non_bit * m) % MOD
    # ｍは上記、2桁目を表す2と同様
    m <<= 1  # ビットを１つずつ左シフト
print(ans)
"""
結局この計算は Ai のすべての組み合わせ(Ai 自身同士は含まない)の 
XOR の合計なので、Ai のあるビットの立っている数の合計を c とすると、
Ai のあるビットが0であった場合により計算結果に立つビットの数は 
c、Ai のあるビットが1であった場合により計算結果に立つビットの数は 
N - c になるので、あるビットに関する計算結果は c * (N -c) の
ビットシフトした値になる. 結果として以下の計算で解ける.
N = int(input())
A = list(map(int, input().split()))
result = 0
for bit in range(60):
    m = 1 << bit　すべてのビットを調べる
    c = sum(a & m for a in A) >> bit　
    ビット分、戻して、その桁に立っているビット数を算出
    result += (c * (N - c)) << bit　
    ビット分（上記の2桁目の2）調整、イメージとしては2のべき乗倍
    result %= 1000000007
print(result)
"""

"""ika tako
bit桁ごとに考える。「XORを取り、その後足し算」という計算過程では
他の桁が影響することはないので、桁毎に独立に考えて問題ない。
N = 5
A = {   1   2   3   4   5 }   ↓
    { 001 010 011 100 101 }
たとえば2桁目を取り出すと
       0   1   1   0   0
各ペアでXORを取ると、(0,1)は'1'となり、(0,0)(1,1)は'0'となる。 
0はいくら足しても0なので、(0,1)の数だけわかれば良い。
それは、(0の個数)×(1の個数)で計算できる。
    0が3個、1が2個
→  XORを取ったとき、2桁目について'1'が立っているペア
　　　　　　　　　　　=合計に足される回数は 3x2=6
→  2進数の2桁目は2を表すので、合計に足される値は6x2=12
これを各桁について足し合わせる。
"""
n = int(eval(input()))
aaa = list(map(int, input().split()))
MOD = 10**9 + 7
ans = 0
m = 1
for i in range(60):  # 上限は2＾60なので、60が上限
    bit = sum(a & m for a in aaa)  # ｍは何番目のビットが立っているか
    # bit //= m こっちが原文、下の行は、下のプルグラムに合わせたみた
    bit >>= i
    non_bit = n - bit
    ans = (ans + bit * non_bit * m) % MOD
    # ｍは上記、2桁目を表す2と同様
    m <<= 1  # ビットを１つずつ左シフト
print(ans)
"""
結局この計算は Ai のすべての組み合わせ(Ai 自身同士は含まない)の 
XOR の合計なので、Ai のあるビットの立っている数の合計を c とすると、
Ai のあるビットが0であった場合により計算結果に立つビットの数は 
c、Ai のあるビットが1であった場合により計算結果に立つビットの数は 
N - c になるので、あるビットに関する計算結果は c * (N -c) の
ビットシフトした値になる. 結果として以下の計算で解ける.
N = int(input())
A = list(map(int, input().split()))
result = 0
for bit in range(60):
    m = 1 << bit　すべてのビットを調べる
    c = sum(a & m for a in A) >> bit　
    ビット分、戻して、その桁に立っているビット数を算出
    result += (c * (N - c)) << bit　
    ビット分（上記の2桁目の2）調整、イメージとしては2のべき乗倍
    result %= 1000000007
print(result)
"""

-for _ in range(60):  # 上限は2＾60なので、60が上限 +for i in range(60):  # 上限は2＾60なので、60が上限 -    bit //= m -    # bit >>= m これはダメだった。なぜ、だろう？ +    # bit //= m こっちが原文、下の行は、下のプルグラムに合わせたみた +    bit >>= i