#!../../../../../../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**9+7).to_i64
  n = inp[0]
  a = inp
  ans = 0_i64
  rw = na(n)
  brw = na(60)
  wt = na(60)
  (0...60).each do |n|
    wt[n] = (2_i64**n)
  end
  (0...n).reverse_each do |i|
    wt.each.with_index do |d,j|
      brw[j] += 1 if d & a[i] >= 1
    end
  end
  
  (0...(n-1)).each do |i|
    nn = n-i-1
    wt.each.with_index do |d,j|
      if d & a[i] >= 1
        brw[j] -= 1
        ans += (nn-brw[j]-brw[j])*d
        ans %= r
      end
    end
  end
  n.times do |i|
    ans = (ans + a[i] * i)% r
  end
  p ans
