/* AUTHOR: TUAN ANH - BUI */
// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
typedef pair<int, ii> iii;
template<class X, class Y>
bool minimize(X &x, const Y &y) {
if (x > y) return x = y, true;
return false;
}
template<class X, class Y>
bool maximize(X &x, const Y &y) {
if (x < y) return x = y, true;
return false;
}
#define FOR(i,a,b) for(int i=(a); i<=(b); ++i)
#define FORR(i,a,b) for(int i=(a); i>=(b); --i)
#define REP(i, n) for(int i=0; i<(n); ++i)
#define RED(i, n) for(int i=(n)-1; i>=0; --i)
#define MASK(i) (1LL << (i))
#define BIT(S, i) (((S) >> (i)) & 1)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define task "icebear"
/*END OF TEMPLATE. ICEBEAR AND THE CAT WILL WIN VOI26 */
const int MOD = 1e9 + 7;
const int inf = (int)1e9 + 27092008;
const ll INF = (ll)1e18 + 27092008;
const int N = 1e6 + 5;
int n, sz[N], f[N], fact[N], finv[N];
int power(int x, int k) {
int res = 1;
while(k > 0) {
if (k & 1) res = 1LL * res * x % MOD;
k >>= 1;
x = 1LL * x * x % MOD;
}
return res;
}
int C(int k, int n) {
return (k > n ? 0 : 1LL * fact[n] * finv[k] % MOD * finv[n - k] % MOD);
}
void init(void) {
cin >> n;
fact[0] = 1;
FOR(i, 1, n) fact[i] = 1LL * fact[i - 1] * i % MOD;
finv[n] = power(fact[n], MOD - 2);
FORR(i, n, 1) finv[i - 1] = 1LL * finv[i] * i % MOD;
}
void process(void) {
FORR(i, n, 1) {
int l = 2 * i;
int r = 2 * i + 1;
f[i] = sz[i] = 1;
if (l <= n) sz[i] += sz[l], f[i] = 1LL * f[i] * f[l] % MOD;
if (r <= n) sz[i] += sz[r], f[i] = 1LL * f[i] * f[r] % MOD;
if (l <= n && r <= n) f[i] = 1LL * f[i] * C(sz[l], sz[l] + sz[r]) % MOD;
}
cout << f[1];
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) {
init();
process();
}
return 0;
}
LyogQVVUSE9SOiBUVUFOIEFOSCAtIEJVSSAqLwovLyB+fiBpY2ViZWFyIH5+CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gaWk7CnR5cGVkZWYgcGFpcjxpbnQsIGlpPiBpaWk7Cgp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPgogICAgYm9vbCBtaW5pbWl6ZShYICZ4LCBjb25zdCBZICZ5KSB7CiAgICAgICAgaWYgKHggPiB5KSByZXR1cm4geCA9IHksIHRydWU7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KICAgIGJvb2wgbWF4aW1pemUoWCAmeCwgY29uc3QgWSAmeSkgewogICAgICAgIGlmICh4IDwgeSkgcmV0dXJuIHggPSB5LCB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiNkZWZpbmUgRk9SKGksYSxiKSBmb3IoaW50IGk9KGEpOyBpPD0oYik7ICsraSkKI2RlZmluZSBGT1JSKGksYSxiKSBmb3IoaW50IGk9KGEpOyBpPj0oYik7IC0taSkKI2RlZmluZSBSRVAoaSwgbikgZm9yKGludCBpPTA7IGk8KG4pOyArK2kpCiNkZWZpbmUgUkVEKGksIG4pIGZvcihpbnQgaT0obiktMTsgaT49MDsgLS1pKQojZGVmaW5lIE1BU0soaSkgKDFMTCA8PCAoaSkpCiNkZWZpbmUgQklUKFMsIGkpICgoKFMpID4+IChpKSkgJiAxKQojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIHRhc2sgImljZWJlYXIiCi8qRU5EIE9GIFRFTVBMQVRFLiBJQ0VCRUFSIEFORCBUSEUgQ0FUIFdJTEwgV0lOIFZPSTI2ICovCgpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKY29uc3QgaW50IGluZiA9IChpbnQpMWU5ICsgMjcwOTIwMDg7CmNvbnN0IGxsIElORiAgPSAobGwpMWUxOCArIDI3MDkyMDA4Owpjb25zdCBpbnQgTiA9IDFlNiArIDU7CmludCBuLCBzeltOXSwgZltOXSwgZmFjdFtOXSwgZmludltOXTsKaW50IHBvd2VyKGludCB4LCBpbnQgaykgewogICAgaW50IHJlcyA9IDE7CiAgICB3aGlsZShrID4gMCkgewogICAgICAgIGlmIChrICYgMSkgcmVzID0gMUxMICogcmVzICogeCAlIE1PRDsKICAgICAgICBrID4+PSAxOwogICAgICAgIHggPSAxTEwgKiB4ICogeCAlIE1PRDsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KCmludCBDKGludCBrLCBpbnQgbikgewogICAgcmV0dXJuIChrID4gbiA/IDAgOiAxTEwgKiBmYWN0W25dICogZmludltrXSAlIE1PRCAqIGZpbnZbbiAtIGtdICUgTU9EKTsKfQoKdm9pZCBpbml0KHZvaWQpIHsKICAgIGNpbiA+PiBuOwogICAgZmFjdFswXSA9IDE7CiAgICBGT1IoaSwgMSwgbikgZmFjdFtpXSA9IDFMTCAqIGZhY3RbaSAtIDFdICogaSAlIE1PRDsKICAgIGZpbnZbbl0gPSBwb3dlcihmYWN0W25dLCBNT0QgLSAyKTsKICAgIEZPUlIoaSwgbiwgMSkgZmludltpIC0gMV0gPSAxTEwgKiBmaW52W2ldICogaSAlIE1PRDsKfQoKdm9pZCBwcm9jZXNzKHZvaWQpIHsKICAgIEZPUlIoaSwgbiwgMSkgewogICAgICAgIGludCBsID0gMiAqIGk7CiAgICAgICAgaW50IHIgPSAyICogaSArIDE7CiAgICAgICAgZltpXSA9IHN6W2ldID0gMTsKICAgICAgICBpZiAobCA8PSBuKSBzeltpXSArPSBzeltsXSwgZltpXSA9IDFMTCAqIGZbaV0gKiBmW2xdICUgTU9EOwogICAgICAgIGlmIChyIDw9IG4pIHN6W2ldICs9IHN6W3JdLCBmW2ldID0gMUxMICogZltpXSAqIGZbcl0gJSBNT0Q7CiAgICAgICAgaWYgKGwgPD0gbiAmJiByIDw9IG4pIGZbaV0gPSAxTEwgKiBmW2ldICogQyhzeltsXSwgc3pbbF0gKyBzeltyXSkgJSBNT0Q7CiAgICB9CiAgICBjb3V0IDw8IGZbMV07Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgaWYgKGZvcGVuKHRhc2siLmlucCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKHRhc2siLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGFzayIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW50IHRjID0gMTsKLy8gICAgY2luID4+IHRjOwogICAgd2hpbGUodGMtLSkgewogICAgICAgIGluaXQoKTsKICAgICAgICBwcm9jZXNzKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQoK