#include<bits/stdc++.h> usingnamespace std; typedeflonglong ll; typedefdouble db; constint N = 2e5 + 10; const ll mod = 998244353;
voiddeer() { ll n, m, a[N]; bool flag = 1; cin >> n >> m; for (int i = 1;i <= n;i++) { cin >> a[i]; if (i > 1 && a[i - 1] % a[i] != 0) flag = 0; } if (!flag) { cout << 0 << "\n"; return; } ll ans = 1; for (int i = 2;i <= n;i++) { ll d = a[i - 1] / a[i], x = m / a[i], y = 0;//y表示不互质的个数 //求出[1,x]中与d互质的数的数目 vector<ll> num; for (int i = 2;i * i <= d;i++) //分解质因数 { if (d % i == 0) //非互质因数 { int len = num.size(); for (int j = 0;j < len;j++) num.push_back(-num[j] * i); //容斥 num.push_back(i); while (d % i == 0) d /= i; } } if (d > 1) //特判 { int len = num.size(); for (int j = 0;j < len;j++) num.push_back(-num[j] * d); num.push_back(d); } for (ll i : num) y += x / i; ans = ans * (x - y) % mod; } cout << ans << "\n"; return; }