#直接无脑线段树了
mod=10**9+7

def op(a, b):
    return a * b % mod
def solve():
    n,q=MII()
    a=LII()
    seg = SegTree(
        op=op,
        e=1,
        v=a
    )

    ans = []
    for _ in range(q):
        l, r = MII()
        ans.append(seg.prod(l-1, r))

    print(*ans)
        
        
    


T=1
# T=II()

res=[]
for _ in range(T):

    solve()
# print('\n'.join(map(str, res)))