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