#include #include using namespace std; const long mod=1e9+7; long power(long a,long b){return b?power(a*a%mod,b/2)*(b%2?a:1)%mod:1;} long dfs(long p,int e,int nxt,vectorn,vectork) { if(e==0) { long ret=1; for(int i=0;i=0) { long ret=0; for(int nk=0;e>=nxt*nk;nk++) { if(nk!=0) { n.push_back(nxt); k.push_back(nk); } (ret+=dfs(p,e-nxt*nk,nxt+1,n,k))%=mod; if(nk!=0) { n.pop_back(); k.pop_back(); } } return ret; } else return 0L; } int M; main() { cin>>M; long ans=1; for(int i=1;i<=M;i++)ans=ans*i%mod; vector >pf; for(int i=2;i*i<=M;i++) { if(M%i==0) { int c=0; while(M%i==0)M/=i,c++; pf.push_back(make_pair(i,c)); } } if(M>1)pf.push_back(make_pair(M,1)); for(pairpff:pf) { long p=pff.first,e=pff.second; ans=ans*dfs(p,e,1,vector(),vector())%mod; } cout<