using modint998244353 = modular<998244353>; using modint1000000007 = modular<1000000007>; } // namespace maths
namespace maths { template <classT> T quick_pow(T a, ull b, T id = T()){ T ret = id; for (; b; b >>= 1, a = a * a) { if (b & 1) { ret = a * ret; } } return ret; }
template <classT> T quick_pow(T a, const std::string &s, T id = T()){ T ret = id; for (size_t i = 0; i < s.size(); i++, a = a * a) { if (s[i] == '1') { ret = a * ret; } } return ret; }
voidprework(){ for (size_t sz = 0; sz < N; sz++) { for (size_t i = 0; i <= sz; i++) { for (size_t j = 0; j < 1u << sz; j++) { val[sz][i][j] = (i == __builtin_popcountll(j)); }
for (size_t k = 0; k < sz; k++) { for (size_t j = 0; j < 1u << sz; j++) { if ((j >> k) & 1) { val[sz][i][j] -= val[sz][i][j ^ (1u << k)]; } } } } } }
std::vector<uint> fact(uint x){ std::vector<uint> p; for (size_t i = 2; i * i <= x; i++) { if (x % i == 0) { p.push_back(i); while (x % i == 0) { x /= i; } } }
if (x > 1) { p.push_back(x); }
return p; }
voidsolve(){ uint n, power; std::cin >> n >> power; std::vector<uint> a(n); for (size_t i = 0; i < n; i++) { std::cin >> a[i]; }
std::vector<std::array<mll, N>> cnt(n + 1);
mll final_ans = 0;
for (size_t i = 0; i < n; i++) { auto p = fact(a[i]);
std::vector<uint> prod(1u << p.size());
for (size_t stat = 0; stat < 1u << p.size(); stat++) { uint k = 1; for (size_t j = 0; j < p.size(); j++) { if ((stat >> j) & 1) { k *= p[j]; } } prod[stat] = k; }
std::array<mll, N> total_cnt;
for (size_t stat = 0; stat < 1u << p.size(); stat++) { for (size_t j = 0; j < N; j++) { total_cnt[j] += cnt[prod[stat]][j]; } }