#include #include #include #include using i64 = long long; using u64 = unsigned long long; #define rep(i,n) for(int i=0; i void chmin(A& l, const A& r){ if(r < l) l = r; } template void chmax(A& l, const A& r){ if(l < r) l = r; } #include using Modint = atcoder::static_modint<998244353>; using namespace std; void testcase(){ i64 n; cin >> n; i64 m = 1; while((m+1)*(m+1) <= n) m += 1; Modint f1 = 0; for(i64 a=1; a<=m; a++){ i64 b = n / a; f1 += Modint(a) * Modint(b) * Modint(b+1); } f1 -= (Modint(m) * Modint(m+1) / 2).pow(2); Modint f2 = 0; for(i64 a=1; a<=m; a++){ f2 += Modint(n / a) * 2; } f2 -= Modint(m).pow(2); Modint ans = f2 * Modint(n+1) - f1; cout << ans.val() << endl; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); testcase(); return 0; }