#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int MOD=998244353;
ll sqr_2(ll l,ll r,ll x){
while(l<=r){
auto mid=l+r>>1;
if(mid*mid<=x) l=mid+1;
else r=mid-1;
}
return l-1;
}
ll sqr_3(ll l,ll r,ll x){
while(l<=r){
auto mid=l+r>>1;
if(mid*mid*mid<=x) l=mid+1;
else r=mid-1;
}
return l-1;
}
ll gcd(ll A,ll B){
if(B==0) return A;
return gcd(B,A%B);
}
ll sqr_4(ll l,ll r,ll x){
while(l<=r){
auto mid=l+r>>1;
if(mid*mid*mid*mid<=x) l=mid+1;
else r=mid-1;
}
return l-1;
}
map<ll,ll>mp,mmp;
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
ll x;
scanf("%lld",&x);
auto tmp=sqr_4(1,40000,x);
if(tmp*tmp*tmp*tmp==x){
mp[tmp]+=4;
continue;
}
tmp=sqr_3(1,1300000,x);
if(tmp*tmp*tmp==x){
mp[tmp]+=3;
continue;
}
tmp=sqr_2(1,1500000000,x);
if(tmp*tmp==x){
mp[tmp]+=2;
continue;
}
bool flag=0;
for(auto it:mp){
if(x%it.first==0){
mp[it.first]++;
mp[x/it.first]++;
flag=1;
break;
}
}
if(flag) continue;
for(auto it:mmp){
if(it.first==x){
mmp[x]++;
flag=1;
break;
}
ll g=gcd(it.first,x);
if(g==1) continue;
mp[g]+=mmp[it.first]+1;
mp[it.first/g]+=mmp[it.first];
mp[x/g]++;
mmp[it.first]=0;
flag=1;
break;
}
if(!flag) mmp[x]++;
}
for(auto it1:mmp){
for(auto it2:mp){
if(it1.first%it2.first==0){
mp[it2.first]+=it1.second;
mp[it1.first/it2.first]+=it1.second;
mmp[it1.first]=0;
break;
}
}
}
ll ans=1;
for(auto it:mp){
// cout<<it.first<<" "<<it.second<<endl;
ans=(ans*(it.second+1))%MOD;
}
for(auto it:mmp){
ans=(ans*(it.second+1))%MOD;
ans=(ans*(it.second+1))%MOD;
}
printf("%lld\n",ans);
return 0;
}
749A - Bachgold Problem | 1486B - Eastern Exhibition |
1363A - Odd Selection | 131B - Opposites Attract |
490C - Hacking Cypher | 158B - Taxi |
41C - Email address | 1373D - Maximum Sum on Even Positions |
1574C - Slay the Dragon | 621A - Wet Shark and Odd and Even |
1395A - Boboniu Likes to Color Balls | 1637C - Andrew and Stones |
1334B - Middle Class | 260C - Balls and Boxes |
1554A - Cherry | 11B - Jumping Jack |
716A - Crazy Computer | 644A - Parliament of Berland |
1657C - Bracket Sequence Deletion | 1657B - XY Sequence |
1009A - Game Shopping | 1657A - Integer Moves |
230B - T-primes | 630A - Again Twenty Five |
1234D - Distinct Characters Queries | 1183A - Nearest Interesting Number |
1009E - Intercity Travelling | 1637B - MEX and Array |
224A - Parallelepiped | 964A - Splits |