P = 10 ** 9 + 7 N = int(input()) A = [int(a) for a in input().split()] if 0 in A: print(0) exit() X = [0] * (N + 2) Y = [0] * (N + 2) j = 0 s = 1 for i in range(N): while j < N and s * A[j] < 10 ** 9: s *= A[j] j += 1 Y[i+1] -= 1 Y[j+1] += 1 X[i] += j - i s //= A[i] for i in range(N): Y[i+1] += Y[i] for i in range(N): Y[i] += X[i] for i in range(N): X[i+1] += X[i] for i in range(N): Y[i+1] += Y[i] ans = 1 for a, y in zip(A, Y): ans = ans * pow(a, y, P) % P print(ans)