/*
由于无头大白鹅学长在题解里把这个题略了
我稍微解释一下这道题
1-n乘起来最大就是 n!
下面我们考虑怎么保证他是一个完全平方数
对于每个数 x 我们分解成 x=p1^a1*p2^a2*p3^a3.....
其中pi是质数 (他有个学名叫做 唯一分解定理)
再考虑一个完全平方数有什么性质
4=2^2 16=2^4 36=2^2*3^2 144=2^4*3^2
可以看出(也可以自己证出)对于一个完全平方数x
他分解完之后 每个ai都是偶数
好
现在思路明确 把n!分解好 对于ai是奇数的
我们把那个单独的pi扔掉即可
然后说一下怎么求n!里面有几个pi
如下代码中的Solve函数 ai=n/pi+n/pi^2+n/pi^3+n/pi^4.....
直到pi^x>n 具体怎么证的自行研究
然后没了
另外取模的数是1e8+7 不是1e9+7
另外别忘了开longlong
*/
#include<iostream>
#include<cstdio>
#define maxn 5000010
#define mod 100000007
#define ll long long
using namespace std;
ll n,prime[maxn/10],c[maxn/10],num,ans=1;
bool f[maxn];
void Prime(){
for(int i=2;i<=n;i++){
if(f[i]==0)prime[++num]=i;
for(int j=1;j<=num;j++){
if(i*prime[j]>maxn-10)break;
f[i*prime[j]]=1;
if(i%prime[j]==0)break;
}
}
}
void Solve(){
for(int i=1;i<=num;i++){
ll P=prime[i];
if(P>n)break;
while(n>=P){
c[i]+=n/P;P*=prime[i];
}
}
}
ll Qc(ll a,ll b){
ll r=1;
while(b){
if(b&1)r=r*a%mod;
b>>=1;a=a*a%mod;
}
return r%mod;
}
int main(){
cin>>n;
Prime();Solve();
for(int i=1;i<=num;i++)
if(c[i]&1)c[i]--;
for(int i=1;i<=num;i++){
if(prime[i]>n)break;
ans=ans*Qc(prime[i],c[i])%mod;
}
cout<<ans<<endl;
return 0;
}