n=int(input()) x=[0]*(n+1) y=[1]*(n+1) z=[0]*(n+1);mod=998244353 for i in range(2,n+1): c=i for j in range(2,int(i**0.5)+1): if i%j==0: c=j;break x[i]=c j=i while j%c==0: y[i]*=c;z[i]+=1;j//=c s=[[0,0] for i in range(n+1)] for i in range(2,n+1): c=i s[x[c]][1]=max(s[x[c]][1],z[c]) if s[x[c]][1]>s[x[c]][0]: s[x[c]][0],s[x[c]][1]=s[x[c]][1],s[x[c]][0] ans=1;p=1 for i in range(1,n+1): ans*=pow(i,s[i][0],mod);f=1 c=i while c>1: if z[c]>s[x[c]][1]: f*=pow(x[c],s[x[c]][0]-s[x[c]][1]) c//=y[c] p=max(p,f) print(ans*pow(p,mod-2,mod)%mod)