- #include<bits/stdc++.h> 
- #define ll long long int 
- #define w(t) ll t;cin>>t;while(t--) 
- #define f(i,a,b) for(ll i=a;i<b;i++) 
- #define scana(arr) for(ll i=0,i<n;i++) cin>>arr[i]; 
- #define vl vector<ll> 
- #define vpl vector< pair<ll,ll> > 
- #define pb push_back 
- #define mod 1000000007 
- using namespace std; 
- bitset<10000000> b; 
- vl primes,factors; 
-   
- void sieve(){ 
- 	b[0]=b[1]=1; 
- 	b.set(); //sets all the bits as 1	 
- 	for(long long int i=2;i<=10000000;i++){ 
- 		if(b[i]){ 
- 			primes.push_back(i); 
- 			for(long long int j=i*i;j<=10000000;j+=i){ 
- 				b[j]=0;	 
- 			} 
- 		} 
- 	} 
- } 
-   
- void prime_factors_sieve_approach(ll n){ 
-     ll count=0; 
-     for(ll i=0;i<primes.size();i++){ 
-         ll x=primes[i]; 
-         if(x*x>n) break; 
-         if(n%x==0){ 
-             if((n/x)==x) factors.pb(x); 
-             else{ 
-                 factors.pb(x); 
-                 factors.pb(n/x); 
-             } 
-         } 
-     } 
-     factors.pb(n); 
- } 
-   
- ll prime_factors_util(ll n){ 
-     ll count=0,divisors=1; 
-     for(ll i=0;i<primes.size();i++){ 
-         ll x=primes[i]; 
-         if(x*x>n) break; 
-         if(n%x==0){ 
-             count=0; 
-             while(n%x==0){ 
-                 n/=x; 
-                 count++; 
-             } 
-             divisors*=((count+1)%mod); 
-         } 
-     } 
-   
-     if(n!=1) divisors=((divisors)%mod*(2)%mod)%mod; 
-     divisors%=mod; 
-     return divisors%mod; 
- } 
-   
- ll fast_modulo_exponentation(ll a,ll b){ 
-     ll ans=1; 
-     while(b){ 
-         if(b&1){ 
-             ans=((ans%mod)*(a%mod))%mod; 
-         } 
-         a=((a%mod)*(a%mod))%mod; 
-         b>>=1; 
-     } 
-     ans%=mod; 
-     return ans%mod; 
- } 
-   
- int main(){ 
-     sieve(); 
-     ll n; 
-     cin>>n; 
-     ll arr[n]; 
-     ll N=1,divisors=1; 
-     f(i,0,n){ 
-         cin>>arr[i]; 
-         N=((N%mod)*(fast_modulo_exponentation(primes[i],arr[i])%mod))%mod; 
-         divisors*=(arr[i]+1); 
-     } 
-   
-     ll P=fast_modulo_exponentation(N,divisors/2); 
-     ll ans=prime_factors_util(P); 
-     cout<<ans%mod<<endl;     
-   
-     return 0; 
- } 
				I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CiNkZWZpbmUgdyh0KSBsbCB0O2Npbj4+dDt3aGlsZSh0LS0pCiNkZWZpbmUgZihpLGEsYikgZm9yKGxsIGk9YTtpPGI7aSsrKQojZGVmaW5lIHNjYW5hKGFycikgZm9yKGxsIGk9MCxpPG47aSsrKSBjaW4+PmFycltpXTsKI2RlZmluZSB2bCB2ZWN0b3I8bGw+CiNkZWZpbmUgdnBsIHZlY3RvcjwgcGFpcjxsbCxsbD4gPgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJpdHNldDwxMDAwMDAwMD4gYjsKdmwgcHJpbWVzLGZhY3RvcnM7Cgp2b2lkIHNpZXZlKCl7CgliWzBdPWJbMV09MTsKCWIuc2V0KCk7IC8vc2V0cyBhbGwgdGhlIGJpdHMgYXMgMQkKCWZvcihsb25nIGxvbmcgaW50IGk9MjtpPD0xMDAwMDAwMDtpKyspewoJCWlmKGJbaV0pewoJCQlwcmltZXMucHVzaF9iYWNrKGkpOwoJCQlmb3IobG9uZyBsb25nIGludCBqPWkqaTtqPD0xMDAwMDAwMDtqKz1pKXsKCQkJCWJbal09MDsJCgkJCX0KCQl9Cgl9Cn0KCnZvaWQgcHJpbWVfZmFjdG9yc19zaWV2ZV9hcHByb2FjaChsbCBuKXsKICAgIGxsIGNvdW50PTA7CiAgICBmb3IobGwgaT0wO2k8cHJpbWVzLnNpemUoKTtpKyspewogICAgICAgIGxsIHg9cHJpbWVzW2ldOwogICAgICAgIGlmKHgqeD5uKSBicmVhazsKICAgICAgICBpZihuJXg9PTApewogICAgICAgICAgICBpZigobi94KT09eCkgZmFjdG9ycy5wYih4KTsKICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIGZhY3RvcnMucGIoeCk7CiAgICAgICAgICAgICAgICBmYWN0b3JzLnBiKG4veCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmYWN0b3JzLnBiKG4pOwp9CgpsbCBwcmltZV9mYWN0b3JzX3V0aWwobGwgbil7CiAgICBsbCBjb3VudD0wLGRpdmlzb3JzPTE7CiAgICBmb3IobGwgaT0wO2k8cHJpbWVzLnNpemUoKTtpKyspewogICAgICAgIGxsIHg9cHJpbWVzW2ldOwogICAgICAgIGlmKHgqeD5uKSBicmVhazsKICAgICAgICBpZihuJXg9PTApewogICAgICAgICAgICBjb3VudD0wOwogICAgICAgICAgICB3aGlsZShuJXg9PTApewogICAgICAgICAgICAgICAgbi89eDsKICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGl2aXNvcnMqPSgoY291bnQrMSklbW9kKTsKICAgICAgICB9CiAgICB9CgogICAgaWYobiE9MSkgZGl2aXNvcnM9KChkaXZpc29ycyklbW9kKigyKSVtb2QpJW1vZDsKICAgIGRpdmlzb3JzJT1tb2Q7CiAgICByZXR1cm4gZGl2aXNvcnMlbW9kOwp9CgpsbCBmYXN0X21vZHVsb19leHBvbmVudGF0aW9uKGxsIGEsbGwgYil7CiAgICBsbCBhbnM9MTsKICAgIHdoaWxlKGIpewogICAgICAgIGlmKGImMSl7CiAgICAgICAgICAgIGFucz0oKGFucyVtb2QpKihhJW1vZCkpJW1vZDsKICAgICAgICB9CiAgICAgICAgYT0oKGElbW9kKSooYSVtb2QpKSVtb2Q7CiAgICAgICAgYj4+PTE7CiAgICB9CiAgICBhbnMlPW1vZDsKICAgIHJldHVybiBhbnMlbW9kOwp9CiAgICAgICAgICAgICAgICAgICAgIAppbnQgbWFpbigpewogICAgc2lldmUoKTsKICAgIGxsIG47CiAgICBjaW4+Pm47CiAgICBsbCBhcnJbbl07CiAgICBsbCBOPTEsZGl2aXNvcnM9MTsKICAgIGYoaSwwLG4pewogICAgICAgIGNpbj4+YXJyW2ldOwogICAgICAgIE49KChOJW1vZCkqKGZhc3RfbW9kdWxvX2V4cG9uZW50YXRpb24ocHJpbWVzW2ldLGFycltpXSklbW9kKSklbW9kOwogICAgICAgIGRpdmlzb3JzKj0oYXJyW2ldKzEpOwogICAgfQogICAgCiAgICBsbCBQPWZhc3RfbW9kdWxvX2V4cG9uZW50YXRpb24oTixkaXZpc29ycy8yKTsKICAgIGxsIGFucz1wcmltZV9mYWN0b3JzX3V0aWwoUCk7CiAgICBjb3V0PDxhbnMlbW9kPDxlbmRsOyAgICAKCiAgICByZXR1cm4gMDsKfQ==