#include<bits/stdc++.h>

using namespace std;
#define show(x) cout<< #x << "= " << x << " \n" ;
#define mod 998244353
#define INF 1000000000000000000
#define pie 3.14159265358979323846
#define ll long long int
#define pb push_back
#define popcnt __builtin_popcount
#define mp make_pair
#define pii pair<ll,ll>
#define prod(a,b) ((a*b)%mod)
#define set0(x) memset(x,0,sizeof(x))
#define setm1(x) memset(x,-1,sizeof(x))
#define printlist(arr) for(auto lstelem :arr) cout<< lstelem << " ";cout<<" \n" 
#define all(a) a.begin(),a.end()
#define sqre(a) ((a)*(a))

//maths stuff
ll powr(ll a,ll b){
    ll res=1;
    while(b){
        if(b%2)
            res=(a*res)%mod;
        a=(a*a)%mod;
        b/=2;
    }
    return res;
}

void extentded_eucledian(ll a,ll b,ll &ex,ll &ey){
    if(b==0){
        ex=1;
        ey=0;
        return;
    }
    extentded_eucledian(b,a%b,ex,ey);
    swap(ex,ey);
    ey-= (a/b)*ex;//gcd= x*a+y*b
}


int main(){ 
    #ifdef ONLINE_JUDGE
        //onlinesubmission
    #else
    freopen("input.txt","r",stdin);
    #endif
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    ll n; cin>> n;
    vector<ll> nod(n+1);
    for(ll i=1;i<=n;++i){
        for(ll j=i;j<=n;j += i) nod[j]+=1;
    }
    vector<ll> dp(n+1);
    dp[0]=1;
    dp[1]=1;
    ll s=2;
    for(ll i=2;i<=n;++i){
        dp[i]=(s+nod[i]-1)%mod;
        s=(s+dp[i])%mod;
    }
    // printlist(dp);
    cout<< dp[n] << "\n" ;
    return 0;
}

//might1331 pratapSingh:"Try Kr raha hu mai bc, timer laga rakha h"
  	    							   			      	 		