#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5,mod=998244353,V=1<<13;
int n,m,a[N],S[V],dp[V][V];
vector<int>vec;
map<int,int>num;
int ksm(int x,int n){
int ret=1;
while(n){
if(n%2){
ret=ret*x%mod;
}
x=x*x%mod,n/=2;
}
return ret;
}
signed main(){
cin>>n>>m;
int tmp=m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=2;i*i<=m;i++){
if(m%i==0){
num[i]=1;
while(m%i==0){
m/=i,num[i]*=i;
}
vec.push_back(i);
}
}
if(m>1){
vec.push_back(m),num[m]=m;
}
dp[0][0]=1;
for(int i=1;i<=n;i++){
if(tmp%a[i]==0){
int now=0,tmp=0;
for(int j:vec){
if(a[i]%num[j]==0){
tmp+=(1<<now);
}
now++;
}
S[tmp]++;
if(!tmp){
dp[0][0]=dp[0][0]*2%mod;
}
}
}
for(int i=1;i<V;i++){
for(int j=0;j<V;j++){
dp[i][j]=dp[i-1][j];
}
for(int j=0;j<V;j++){
if(!S[i]){
continue;
}
dp[i][i|j]=(dp[i][i|j]+dp[i-1][j]*ksm(2,S[i]-1))%mod;
}
}
cout<<dp[V-1][(1<<vec.size())-1];
}