#pragma GCC optimize("Ofast") #pragma GCC target("avx2") #define MD 998244353 char d[1234567]; main(){ int n; scanf("%d",&n); int m=n>>1,h=sqrt(n),i=3; long a=1,b=1l<<~__builtin_clzl(n); for(;i<=h;i+=2){ if(!d[i>>1]){ a=b; int c=1; while(c*i<=n)c*=i; b=b*c%MD; for(int j=i*i>>1;j<=m;j+=i){ d[j]=1; } } } char*p=&d[i>>1]; for(;i<=n;i+=2){ if(!*p++){ a=b; b=b*i%MD; } } printf("%ld",a); }