#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include using namespace std; int main() { long int n; long int mod = 998244353; cin >> n; vector v; long int t = 1; while (t * t <= n) { if (n % t == 0) { v.push_back(t); if (t != n / t) v.push_back(n/t); } t++; } unordered_map dp; for (auto& val : v) { dp.insert(make_pair(val, 0)); } sort(v.begin(), v.end()); dp[1] = 1; for (auto& val1 : v) { for (auto& val2 : v) { long int l = lcm(val1, val2); if (l == val1) continue; dp[l] += dp[val1]; dp[l] %= mod; } } cout << dp[n] << endl; }