def solve(): ans = 1 mod = 10**9+7 N = int(input()) A = list(map(int, input().split())) imos = [0]*(N+2) start = 0 prod = 1 for end in range(N): prod *= A[end] while prod>=10**9: prod //= A[start] start += 1 imos[start] += 1 imos[end+1] -= end+2-start imos[end+2] += end+1-start for i in range(1,N+1): imos[i] += imos[i-1] for i in range(1,N+1): imos[i] += imos[i-1] for i in range(N): ans *= pow(A[i],imos[i],mod) ans %= mod return ans print(solve())