#include #include using namespace std; using namespace atcoder; using ll = long long; using ld = long double; ll intpow(ll a, ll b) { ll c = 1; while (b) { if (b & 1) c = (c * a) % 998244353; a *= a; a %= 998244353; b >>= 1; } return c % 998244353; } ll sums(ll a, ll r){ if(r == 1){ return 1; } if(r % 2 == 1){ r--; ll ret = (sums(a,r/2) * (intpow(a,r/2)+ 1))% 998244353; ret += intpow(a,r); return ret % 998244353; }else{ ll ret = (sums(a,r/2) * (intpow(a,r/2)+ 1))% 998244353; return ret; } } int main(){ ll n; cin >> n; ll ans = 0; for(ll i = 1; i * i <= n; i++){ ll a = n / i; ans += intpow(a,i); ans %= 998244353; } ll p = n; for(ll i = 1; i * i < n; i++){ ll a = ll(n / (i+1)) + 1; if(i == 1)ans += p - a + 1; else{ ll pows = intpow(i,a); ll r = p - a + 1; ll wa = sums(i,r); ans += (pows * wa)% 998244353; } ans %= 998244353; p = a - 1; } cout << ans << '\n'; return 0; }