#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 1e7 + 7;
int n, f[49], ans = 1, C[49][49];
int qpow(int a, int exp) {
int res = 1;
while (exp) {
if (exp & 1)
res = res * a % mod;
a = a * a % mod, exp >>= 1;
} return res;
}
void solve(int n, int add) {
if (n == 0)
return;
int mxlg = log2(n + 1);
for (int i = 1; i <= mxlg; i++)
f[i + add] += C[i][mxlg];
solve(n - (1ll << mxlg) + 1, add + 1);
}
signed main() {
cin >> n;
for (int i = 0; i <= 48; i++)
for (int j = i; j <= 48; j++)
if (i == 0 || i == j)
C[i][j] = 1;
else
C[i][j] = (C[i][j - 1] + C[i - 1][j - 1]) % mod;
solve(n, 0);
for (int i = 1; i <= 48; i++)
if (f[i])
ans = ans * qpow(i, f[i]) % mod;
else
break;
cout << ans;
return 0;
}