#include<iostream>
#include<vector>
using namespace std;
 
const long long mod=1e9+7;
int m, maxn,p; long long fp,prdt=1,d=1;
vector<long long> cnt(2e5+1); // prime factors less than 2*10^5
 
long long modpow(long long a, long long x){
	long long e=1;
	while(x){
		if(x&1) e=e*a%mod;
		a=a*a%mod; x>>=1;
	}
	return e;
}
int main(){
	cin>>m;  for(int i=1; i<=m; ++i) cin>>p, ++cnt[p], maxn=max(maxn,p);
	// Calculate product of divisors of a number from a given list of its prime factors
	/* EXAMPLE:
	   (a^x * b^y * c^z * d^t)^(x+1)(y+1)(z+1)(t+1)
	  =  a^(x(x+1)/2 * (y+1)(z+1)(t+1))
	   * b^(y(y+1)/2 * (x+1)(z+1)(t+1))
	   * c^(z(z+1)/2 * (x+1)(y+1)(t+1))
	   * d^(t(t+1)/2 * (x+1)(y+1)(z+1))
	*/
	for(int num=2; num<=maxn; ++num)  if(cnt[num]){
 
		// For a prime p raised to the pow a, f(p^a) = p^(a(a+1)/2)
		fp = modpow(num, cnt[num]*(cnt[num]+1)/2) % mod;
 
		// f(a*b) = f(a^d(b)) * f(b^d(a))
		// where d(a), d(b) denotes the num of div in a & b
		prdt = modpow(prdt, cnt[num]+1) * modpow(fp,d) % mod;
 
		// The num of div d updated using Fermat’s Little Theorem:
		// a^(m–1) = 1 (mod m), extended to a^x = a^(x % (m–1)) (mod m)
		d = d * (cnt[num]+1) % (mod-1);
	}
	return cout<<prdt, 0;
}
				I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBtb2Q9MWU5Kzc7CmludCBtLCBtYXhuLHA7IGxvbmcgbG9uZyBmcCxwcmR0PTEsZD0xOwp2ZWN0b3I8bG9uZyBsb25nPiBjbnQoMmU1KzEpOyAvLyBwcmltZSBmYWN0b3JzIGxlc3MgdGhhbiAyKjEwXjUKCmxvbmcgbG9uZyBtb2Rwb3cobG9uZyBsb25nIGEsIGxvbmcgbG9uZyB4KXsKCWxvbmcgbG9uZyBlPTE7Cgl3aGlsZSh4KXsKCQlpZih4JjEpIGU9ZSphJW1vZDsKCQlhPWEqYSVtb2Q7IHg+Pj0xOwoJfQoJcmV0dXJuIGU7Cn0KaW50IG1haW4oKXsKCWNpbj4+bTsgIGZvcihpbnQgaT0xOyBpPD1tOyArK2kpIGNpbj4+cCwgKytjbnRbcF0sIG1heG49bWF4KG1heG4scCk7CgkvLyBDYWxjdWxhdGUgcHJvZHVjdCBvZiBkaXZpc29ycyBvZiBhIG51bWJlciBmcm9tIGEgZ2l2ZW4gbGlzdCBvZiBpdHMgcHJpbWUgZmFjdG9ycwoJLyogRVhBTVBMRToKCSAgIChhXnggKiBiXnkgKiBjXnogKiBkXnQpXih4KzEpKHkrMSkoeisxKSh0KzEpCgkgID0gIGFeKHgoeCsxKS8yICogKHkrMSkoeisxKSh0KzEpKQoJICAgKiBiXih5KHkrMSkvMiAqICh4KzEpKHorMSkodCsxKSkKCSAgICogY14oeih6KzEpLzIgKiAoeCsxKSh5KzEpKHQrMSkpCgkgICAqIGReKHQodCsxKS8yICogKHgrMSkoeSsxKSh6KzEpKQoJKi8KCWZvcihpbnQgbnVtPTI7IG51bTw9bWF4bjsgKytudW0pICBpZihjbnRbbnVtXSl7CgkJCgkJLy8gRm9yIGEgcHJpbWUgcCByYWlzZWQgdG8gdGhlIHBvdyBhLCBmKHBeYSkgPSBwXihhKGErMSkvMikKCQlmcCA9IG1vZHBvdyhudW0sIGNudFtudW1dKihjbnRbbnVtXSsxKS8yKSAlIG1vZDsKCQkKCQkvLyBmKGEqYikgPSBmKGFeZChiKSkgKiBmKGJeZChhKSkKCQkvLyB3aGVyZSBkKGEpLCBkKGIpIGRlbm90ZXMgdGhlIG51bSBvZiBkaXYgaW4gYSAmIGIKCQlwcmR0ID0gbW9kcG93KHByZHQsIGNudFtudW1dKzEpICogbW9kcG93KGZwLGQpICUgbW9kOwoJCQoJCS8vIFRoZSBudW0gb2YgZGl2IGQgdXBkYXRlZCB1c2luZyBGZXJtYXTigJlzIExpdHRsZSBUaGVvcmVtOgoJCS8vIGFeKG3igJMxKSA9IDEgKG1vZCBtKSwgZXh0ZW5kZWQgdG8gYV54ID0gYV4oeCAlICht4oCTMSkpIChtb2QgbSkKCQlkID0gZCAqIChjbnRbbnVtXSsxKSAlIChtb2QtMSk7Cgl9CglyZXR1cm4gY291dDw8cHJkdCwgMDsKfQ==