#include using namespace std; using ll = long long; unordered_map mp, mp_cn; ll m = 998244353; ll cnt_yk(ll a){ if (mp_cn.find(a) != mp_cn.end()) { return mp_cn[a]; } if (a == 1) { return mp_cn[a] = 1; } mp_cn[a] = 0; for (ll i = 1; i * i <= a; i ++) { if (a % i == 0) { mp_cn[a] ++; if (i * i < a) { mp_cn[a] ++; } } } return mp_cn[a]; } ll calc(ll a) { if (mp.find(a) != mp.end()) { return mp[a]; } mp[a] = 0; for (ll i = 1; i * i <= a; i ++) { if (a % i == 0) { mp[a] += (calc(i) * cnt_yk(i)) % m; if (i * i < a && i > 1) { mp[a] += (calc(a / i) * cnt_yk(a / i)) % m; } mp[a] %= m; } } return mp[a]; } int main() { ll N; cin >> N; mp[1] = 1; cout << calc(N) << endl; }