#!../../../../../../usr/bin/crystal
def inpf() a=gets.to_s.chomp.split(" ").map{|u|u.to_f}end
  def inps() a=gets.to_s.chomp.split(" ")end
  def copy(a) a.clone end
  def kaijo(n : Number,r : Number = 10**9+7) (n < 2)? 1 : (2..n).reduce{|memo,u|memo=((memo*u) % r)} end
  def na(n,d=0_i64) Array.new(n,d)end
  def na2(n,m,d=0) Array.new(n){Array.new(m,d)}end
  def na3(n,m,l,d=0) Array.new(n){Array.new(m){Array.new(l,d)}}end
  def inp() a=gets.to_s.chomp.split(" ").map{|u|u.to_i64}end
  def r_up(a, b) (a+b-1)/b end
  def r_sort(a) a.sort{|a,b|b<=>a} end

  r = (10_i64**9)+7_i64
  n = inp[0]
  a = inp
  
  ans = 0_i64
  brw = na(60)
  wt = na(61)
  (0...61).each do |n|
    wt[n]=(2_i64**n)
  end
  a.reverse_each.with_index do |d,i|
    j = 0
    while wt[j] <= d
      if (d&wt[j] >= 1)

        ans += (i-brw[j]-brw[j])*(wt[j])
        brw[j] += 1
      end
      j += 1
    end
    ans %= r if ans >= r
  end
  
  n.times do |i|
    ans = (ans + (a[i] * i)% r )% r
  end
  p ans
  