""" """ import sys from sys import stdin import bisect mod = 10**9+7 N = int(input()) A = list(map(int,stdin.readline().split())) if 0 in A: print (0) sys.exit() ans = 1 s = 1 pl = [0] * (N+1) df = [0] * (N+1) l = 0 for r,a in enumerate(A): s *= a while s >= 10**9: s //= A[l] l += 1 pl[l] += 1 pl[r+1] -= 1 df[r+1] -= r-l+1 #print (pl,df) p = 0 q = 0 cnt = [] for i in range(N): p += pl[i] q += p + df[i] cnt.append(q) ans = 1 for i in range(N): ans *= pow(A[i],cnt[i],mod) ans %= mod print (ans)