#include #include #include #include #define N 3000005 using namespace std; const long long Mo=3*(1ll<<30ll)+1; int i,j,m,n,p[N],k,a[N],vis[N],prime[N],tot,Min[N],Q[N],R[N],sum[N]; int read() { int x=0; char c; while (c=getchar(),c<'0'||c>'9'); x=c-'0'; while (c=getchar(),c>='0'&&c<='9') x=(x<<1)+(x<<3)+c-'0'; return x; } long long power(int x,int y) { long long sum=1; for (;y;y>>=1) { if (y&1) sum=1ll*sum*x%Mo; x=1ll*x*x%Mo; } return sum; } void pre() { for (i=2;i1) { if (!R[0]||R[R[0]]!=Min[Q[i]]) R[++R[0]]=Min[Q[i]],sum[R[0]]=1; else sum[R[0]]++; Q[i]/=Min[Q[i]]; } for (j=1;j<=R[0];++j) p[R[j]]=max(p[R[j]],sum[j]); } long long ans=1; for (i=2;i<=n;++i) if (p[i]) ans=1ll*ans*power(i,p[i])%Mo; cout<