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 if(desks(i)%chair.le.2) then seito = MOD(seito + desks(i)%num,modulo) else seito = MOD(seito + desks(i)%num*2_8,modulo) end if end do print '(i0)', MOD(seito, modulo) end program