/*
BISMILLAHIR RAHMANIR RAHIM
*/
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
ll mod=1e9+7;
vector<bool> prime(1e7+1,1);
void seive()
{
prime[0]=prime[1]=false;
for(long long i=2;i<=1e7;i++)
{
if(prime[i]){
for(long long j=i*i;j<=1e7;j+=i)
{
prime[j]=false;
}
}
}
}
void solve()
{
ll n;cin>>n;
map<ll,ll> mp;
for(int i=0;i<n;i++)
{
int x;cin>>x;
if(prime[x])
{
mp[x]++;continue;
}
for(int j=2;j*j<=x;j++)
{
if(x%j==0)
{
while(x%j==0)
{
mp[j]++;x/=j;
}
}
}
if(x!=1)mp[x]++;
}
ll ans=1;
for(auto it:mp)
{
ans*=(it.second+1);ans%=mod;
}
cout<<ans<<endl;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t=1;
seive();
//cin>>t;
while(t--)
{
solve();
}
return 0;
}