//#define //_GLIBCXX_DEBUG #include #include #include using namespace std; using namespace atcoder; using ll = long long; using mint = atcoder::modint998244353; int main(){ ll N; cin >> N; mint ans=0; ll uplimit=-1; for(ll i=1;i*i<=N;i++){ ll up=N/i; ll down=N/(i+1); mint a=mint(i).pow(down+1); mint b=mint(i).pow(up-down); if(i==1) ans+=up-down; else{ ans+=a*((b-1)/(i-1)); } uplimit=N/(i+1); } for(ll i=1;i<=uplimit;i++){ ans+=mint(N/i).pow(i); } cout << ans.val() << '\n'; }