using System;
using System.Collections.Generic;
class Program
{
    static void Main(string[] args)
    {
        //modをかける場所がわからない
        int N = int.Parse(Console.ReadLine());
        long[] A = new long[N];
        string[] str = Console.ReadLine().Split();
        for (var i = 0; i < N; i++)
        {
            A[i] = long.Parse(str[i]);
        }
        
        long ans = 0;
        int mod = (int)1e9 + 7;

        // bit列60桁分をすべて走査する
        for (int k = 0; k < 60; k++)
        {
            long x0 = 0;
            long x1 = 0;
            for (int i = 0; i < N; i++)
            {
                // k桁目をビット演算で取り出す
                var x = (A[i] >> k) & 1;
                // k桁目が 0, 1 のどちらかを数えておく
                if (x == 0) x0 += 1;
                else x1 += 1;
            }

            long p = 1;
            for (int i = 0; i < k; i++)
            {
                p *= 2;
                //p %= mod;
            }
            // x0 * x1 が 0, 1 の組み合わせ数
            var count = (x0 * x1);
            ans += count * p;
            ans %= mod;
        }

        Console.WriteLine(ans);
    }
}
