# 解説を見たが、ちゃんと式変形していればできた問題ですね。反省。 import sys input = sys.stdin.readline mod=998244353 N=int(input()) if N<=1000: ANS=0 for i in range(1,N+1): x=N//i ANS+=pow(x,i,mod) ANS%=mod print(ANS) exit() sq=round(N**(1/2))*2 ANS=0 for i in range(1,sq+1): x=N//i ANS+=pow(x,i,mod) ANS%=mod now=sq+1 while now<=N: x=N//now to=min(N,N//x) # Σ[now,to] x^i if x==1: ANS+=to-now+1 else: ANS+=pow(x,now,mod)*pow(x-1,mod-2,mod)*(pow(x,to-now+1,mod)-1) ANS%=mod now=to+1 print(ANS%mod)