#include #include using namespace std; using namespace atcoder; using mint=modint998244353; using ll=long long; int main(){ int n; mint ans = 0; cin >> n; //first=割るだけ割った結果今残っている数 //second=現段階で確定している約数の個数 vector> yak(n+1); for(int i = 1; i <= n; i++) { yak[i] = {i,1}; } //約数求めパート for (int i = 2; i <= n; i++) { if(yak[i].first == 1)continue; for(int j = i; j <= n; j += i) { int mae = yak[j].second; while(yak[j].first % i == 0) { yak[j].second += mae; yak[j].first /= i; } } } //rui=累積和をとる vector rui(n+1); for(int i = 1; i <= n; i++) { rui[i] = yak[i].second; } for(int i = 1; i <= n; i++) { rui[i] += rui[i-1]; } for(int i = 1; i <= n; i++) { ans += rui[i]; } cout << ans.val() << endl; }