#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int MOD=(int)1e9+7;
const int INF=(int)1e9;
const ll LINF=(ll)1e18;

ll modpow(ll x,ll n){
    ll res=1;
    while(n>0){
        if(n&1)res=res*x%MOD;
        x=x*x%MOD;
        n>>=1;
    }
    return res;
}

int main(){
    int n,x;
    cin>>n>>x;
    int s[n+1];
    for(int i=0;i<n;i++){
        cin>>s[i];
    }
    s[n]=INF;
    sort(s,s+n);
    int crt=0;
    ll dp[x+1]={};
    for(int i=0;i<=x;i++){
        while(s[crt]<=i)crt++;
        if(crt==0){
            dp[i]=i;
            continue;
        }
        ll inv=modpow(crt,MOD-2);
        for(int j=0;j<crt;j++){
            dp[i]=(dp[i]+dp[i%s[j]])%MOD;
        }
        dp[i]=(dp[i]*inv)%MOD;
    }
    ll ans=dp[x];
    for(int i=2;i<=n;i++){
        ans=(ans*i)%MOD;
    }
    cout<<ans<<endl;
}

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
long long modpow(long long a, long long n, long long mod) {
    long long res = 1;
    while (n > 0) {
        if (n & 1) res = res * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return res;
}
int main(){
  const ll mod=998244353;
  int n,d[100010];
  cin >> n;
  int i,ma=0;
  for(i=0;i<n;i++){
    cin >> d[i];
    ma=max(ma,d[i]);
  }
  if(d[0]!=0){
    cout << 0 << endl;
    return 0;
  }
  vector<int> x(100010,0);
  for(i=0;i<n;i++){
    x[d[i]]++;
  }
  if(x[0]!=1){
    cout << 0 << endl;
    return 0;
  }
  for(i=0;i<=ma;i++){
    if(x[i]==0){
      cout << 0 << endl;
      return 0;
    }
  }
  ll ans=1;
  for(i=1;i<=ma-1;i++){
    ans*=modpow(x[i],x[i+1],998244353);
    ans=ans%mod;
  }
  cout << ans << endl;
}