这个(n!)不如先简简单单看成n,然后可知,(x>n)且(y>n)不如令(x=n+a,y=n+b)代入原式子,可知
(a*b=n^2)
那么a,b就是它的一对因子了
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define int long long
using namespace std;
int vis[1000001];
int prime[1000001];
int cnt;
int n;
void ol(){
for(int i=2;i<=n;++i){
if(!vis[i]){
prime[++cnt]=i;
}
for(int j=1;j<=cnt&&i*prime[j]<=n;++j){
vis[i*prime[j]]=1;
if(i%prime[j]) break;
}
}
}
int cntt[10000001];
void divide(int x){
for(int i=1;prime[i]*prime[i]<=x;++i){
while(x%prime[i]==0){
cntt[prime[i]]++;
x/=prime[i];
}
}
if(x!=1){
cntt[x]++;
}
return ;
}
int ans=1;
int mod=1000000007;
signed main(){
scanf("%d",&n);
ol();
for(int i=1;i<=n;++i){
divide(i);
}
for(int i=1;i<=cnt;++i){
ans=ans*((cntt[prime[i]]*2+1));
ans%=mod;
}
cout<<(ans);
return 0;
}