#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,b=2,mod=10000007,ans=1;
int a[100],f[100][100];
long long qp(int a, int b){
int ans=1,base=a;
while(b){
if(b&1) ans=ans*base%mod;
base=base*base%mod;
b>>=1;
}
return ans;
}
int solve(int n){
if(n==0) return 0;
int cnt=0;
while(n){
a[++cnt]=n%b;
n/=b;
}
int ans=0,last=0;
for(int i=cnt;i>=1;i--){
int now=a[i];
if(now!=0){
ans+=f[i-1][k-last];
if(now==1){
last++;
}
else{
ans+=f[i-1][k-last-1];
}
if(now>1 || last>k) break;
}
if(i==1 && last==k) ans++;
}
return ans;
}
signed main(){
cin>>n;
f[0][0]=1;
for(int i=1;i<=70;i++){
f[i][0]=1;
for(int j=1;j<=i;j++) f[i][j]=f[i-1][j]+f[i-1][j-1];
}
for(k=1;k<=64;k++){
ans=qp(k,solve(n)%mod)*ans%mod;
}
cout<<ans;
return 0;
}
代码吃操作,请慎用