# Writer解 n = int(input()) a = list(map(int, input().split())) a.append(10**9) mod = 10**9+7 if 0 in a: print(0) exit() p = [0]*n s = 1 j = 0 for i in range(n): while s*a[j] < 10**9: s *= a[j] j += 1 p[i] = j-i s //= a[i] imos = [0]*(n+1) for i in range(n): imos[i] += 1 imos[i+p[i]] -= 1 for i in range(n): imos[i+1] += imos[i] for i in range(n): if i!=0: imos[i-1] -= p[i] for i in range(n, 0, -1): imos[i-1] += imos[i] ans=1 for i in range(n): ans *= pow(a[i], imos[i], mod) ans %= mod print(ans)