TYPE desk
     integer(kind=8)::chair
     integer(kind=8)::num
  end type desk
  integer*8::i,N,seito=0
  integer*8,parameter::modulo=1000000007_8
  type(desk),allocatable::desks(:)
  read *, N
  allocate(desks(N))
  read *,desks

  do i=1,N
     seito = MOD(seito + MOD(desks(i)%num,modulo)*MOD((desks(i)%chair+1)/2,modulo),modulo)
       end do
  print '(i0)', MOD(seito, modulo)

end program