#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e4+10,M=1500;
ll ans=1;
int n,m,w,a[N],prime[N],v[N];
int ve[N][M];
void primes(int x)
{
for(int i=2;i<=x;i++)
{
if(!v[i])
{
prime[++m]=i;
v[i]=i;
}
for(int j=1;j<=m;j++)
{
if(prime[j]>v[i]||prime[j]>x/i)
break;
v[i*prime[j]]=prime[j];
}
}
}
int main()
{
scanf("%d%d",&n,&w);
primes(N);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
int b=a[i];
for(int j=1;j<=m;j++)
{
if(b<prime[j])
break;
int g=0;
while(b%prime[j]==0)
b/=prime[j],g++;
ve[i][j]=g;
}
}
for(int j=1;j<=m;j++)
{
if(w<prime[j])
break;
while(w%prime[j]==0)
{
w/=prime[j];
int mn=0x7f7f7f7f,mi;
for(int i=1;i<=n;i++)
if(mn>ve[i][j])
mn=ve[i][j],mi=i;
ve[mi][j]++;
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(prime[j]<=a[i])
ans=1ll*ans*(ve[i][j]+1)%998244353;
printf("%lld\n",ans);
return 0;
}