#include<bits/stdc++.h>
using namespace std;
long long n,mod=10000007;
long long c[65][65];
long long power(long long x,long long y){
if(y==0) return 1;
long long tmp=power(x,y/2);
if(y&1) return tmp*tmp%mod*x%mod;
return tmp*tmp%mod;
}
long long ans=1;
void dfs(long long x,long long one){
if(x==-1){
ans=ans*one%mod;
return;
}
if((n&(1ll<<x))==0) dfs(x-1,one);
else{
for(long long i=0;i<=x;i++)
if(one+i) ans=(ans*power(one+i,c[x][i]))%mod;
dfs(x-1,one+1);
}
}
int main(){
cin>>n;
for(int i=0;i<=61;i++) c[i][i]=c[i][0]=1;
for(int i=1;i<=61;i++){
for(int j=1;j<i;j++){
c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
}
}
dfs(61,0);
cout<<ans;
return 0;
}