# coding: utf-8 # Your code here! import sys read = sys.stdin.read readline = sys.stdin.readline n,*a = map(int,read().split()) if 0 in a: print(0) exit() MOD = 10**9+7 coeff = [0]*(n+1) const = [0]*(n+1) res = 1 r = 0 for l in range(n): while r < n and res*a[r] < 10**9: res *= a[r] r += 1 res //= a[l] coeff[l] -= 1 coeff[r] += 1 const[l] += r const[r] -= r for i in range(n): coeff[i+1] += coeff[i] const[i+1] += const[i] ans = 1 for idx,(i,j,k) in enumerate(zip(a,coeff,const)): r = j*(idx)+k #print(r) ans *= pow(i,r,MOD) ans %= MOD print(ans)