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