N = int(input()) A = list(map(int, input().split())) if 0 in A: print(0) exit() mod = 10 ** 9 + 7 from collections import * Q = deque() val, now = 1, 1 inf = 10 ** 9 ans = 1 for i in range(N - 1, -1, -1): Q.appendleft(A[i]) now *= A[i] val *= pow(A[i], len(Q), mod) val %= mod while now >= inf: a = Q.pop() val *= pow(now, mod-2, mod) now //= a ans *= val ans %= mod print(ans)