using System;
using System.Linq;
using System.Collections.Generic;
class ProgramD
{
    static void Main(string[] args)
    {
        //入力
        long n = int.Parse(Console.ReadLine());
        long[] a = new long[n];
        long sum = 0;
        string[] input = Console.ReadLine().Split(' ');
        long mod = 1000000000 + 7;

        //代入する
        for(long i = 0; i < n;i++)
            a[i] = long.Parse(input[i]);

        //条件入力
        for(long k = 0; k < 61;k++)
        {
            long zero = 0;
            long one = 0;
            for(long i = 0; i < n;i++)
            {
                if(bitter(a[i],(int)k) == 1)
                    one++;
                else
                    zero++;

            }
            //i桁目の和を出す
            sum += one * zero * modpow(2,k,mod) % mod;
            sum %= mod;
        }

        //答え出力
        Console.WriteLine(sum);
    }

    //xのk番目のビットを出す
    static long bitter(long x, int k)
    {
        if(((x >> k) & 1) == 0)
            return 0;
        return 1;
    }

    //繰り返し二乗法
    static long modpow(long a, long n,long mod)
    {
        if(n == 0)
            return 1;
        
        if(n % 2 == 0)
        {
            long temp = modpow(a,n/2,mod);
            return temp*temp % mod;
        }

        return a * modpow(a,n-1,mod) % mod;
    }
}