#include #include using namespace std; using namespace atcoder; typedef modint998244353 mint; typedef long long ll; // makediv vector makediv(ll n){ vector ld, ud; for (ll i=1; i*i<=n; i++){ if (n%i == 0){ ld.push_back(i); if (i != n/i){ ud.push_back(n/i); } } } reverse(ud.begin(), ud.end()); ld.insert(ld.end(), ud.begin(), ud.end()); return ld; } // ----- vector> pfact(ll n){ vector> ret; for (ll i=2; i*i<=n; i++){ if (n%i == 0){ int cnt = 0; while (n%i == 0){ n /= i; cnt++; } ret.push_back(pair(i, cnt)); } } if (n > 1) ret.push_back(pair(n, 1)); return ret; } int main(){ ll n; cin >> n; vector> pf = pfact(n); vector g = makediv(n); int m = g.size(); vector dp(m); dp[0] = 1; for (int i=0; i