#include<bits/stdc++.h>
using namespace std;
unsigned long long n,m,a[100010],b[100010],c[1010],k,wz,ma,s,maxn,ans=1,mod=998244353;
unsigned long long ysgs(long long x)
{
long long sum=1;
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
{
s=1;
while(x%i==0)
x/=i,s++;
sum*=s;
}
}
if(x>1)
sum*=2;
return sum;
}
bool pdzs(int a)
{
if(a==1)
return 0;
if(a==2)
return 1;
for(int i=2;i<=sqrt(a);i++)
if(a%i==0)
return 0;
return 1;
}
void fjys(long long a)
{
if(pdzs(a))
c[++k]=a;
else
{
for(int i=2;i<=a;i++)
{
if(a%i==0)
{
a/=i;
if(a==1)
{
c[++k]=i;
break;
}
else
c[++k]=i;
i=1;
}
}
}
}
void dfs(long long gs)
{
if(gs==k)
{
ans=1;
for(int i=1;i<=n;i++)
ans*=ysgs(a[i]);
maxn=max(maxn,ans);
return ;
}
for(int i=1;i<=n;i++)
{
a[i]*=c[gs+1];
dfs(gs+1);
a[i]/=c[gs+1];
}
}
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define endl '\n'
#define QwQ return 0;
int main()
{
IOS;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i],b[i]=ysgs(a[i]);
if(m==1)
{
for(int i=1;i<=n;i++)
ans*=b[i]%mod,ans%=mod;
cout<<ans;
QwQ;
}
else if(n<=5)
{
fjys(m);
dfs(0);
cout<<maxn%mod;
QwQ;
}
else
{
fjys(m);
for(int j=1;j<=k;j++)
{
ma=0;
for(int i=1;i<=n;i++)
if(ysgs(a[i]*c[j])-ysgs(a[i])>ma)
ma=ysgs(a[i]*c[j])-ysgs(a[i]),wz=i;
a[wz]*=c[j];
}
for(int i=1;i<=n;i++)
ans*=ysgs(a[i])%mod,ans%=mod;
cout<<ans;
}
QwQ;
}