https://www.luogu.com.cn/record/164343090
#include<iostream>
#include<algorithm>
#include<vector>
#define int long long
const int maxn=1000001,mod=998244353;
using namespace std;
int n,m,a[maxn],num[maxn],cnt[maxn],bdiv[maxn],len;
inline int read(){
char ch=getchar();
int x=0,f=1;
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while('0'<=ch&&ch<='9'){
x=x*10+ch-'0';
ch=getchar();
} return x*f;
}
signed main(){
n=read(),m=read();
for(int i=1;i<=n;i++){
a[i]=read();
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
if(len==0){
num[++len]=a[i];
cnt[len]=1;
continue;
}
if(num[len]!=a[i]){
num[++len]=a[i];
cnt[len]=1;
}else cnt[len]++;
}
int ans=0;
for(int i=1;i<=len;i++)bdiv[i]=m/num[i];
for(int i=1;i<=len;i++){
int nans=0;
for(int j=1;j<=i;j++){
int p1=(bdiv[j]/num[i])%mod;
if(i!=j)nans+=2*cnt[j]*p1;
else nans+=cnt[j]*p1;
nans%=mod;
}
ans+=cnt[i]*nans,ans%=mod;
}
printf("%lld\n",ans%mod);
return 0;
}