#include<cstdio>
using namespace std;
#define MODN 998244353
#define L 1229
int prime[L]=
int n,w;
long long count[L][100005]={0};
void init();
signed main() {
init();
unsigned long long ans=1;
int minn;
for(int i=0;i<L;i++) {
while(count[i][0]--) {
minn=0;
for(int j=1;j<=n;j++) {
if(count[i][j]==0) {
minn=j;
break;
}
if(minn==0) minn=j;
else if(count[i][minn]>count[i][j]) minn=j;
}
count[i][minn]++;
}
}
for(int i=1;i<=n;i++) {
for(int j=0;j<L;j++) {
if(count[j][i]) ans=ans*(count[j][i]+1)%MODN;
}
}
printf("%u\n",ans);
return 0;
}
void init() {
scanf("%u %u",&n,&w);
int p,tp;
for(int i=1;i<=n;i++) {
scanf("%d",&p);
for(int j=0;prime[j]<=p;j++) {
if(p%prime[j]==0) {
tp=p;
while(tp%prime[j]==0) {
tp/=prime[j];
count[j][i]++;
}
}
}
}
if(w<=1) return;
for(int i=0;prime[i]<=w;i++) {
if(w%prime[i]==0) {
tp=w;
while(tp%prime[i]==0) {
tp/=prime[i];
count[i][0]++;
}
}
}
return;
}