#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 100000;
ll s[maxn + 10], dp[maxn + 10], inv[maxn + 10], f[maxn + 10];
ll n;
ll mod = 1000000009;
ll qPow(ll a, ll b)
{
ll ans = 1;
while (b != 0)
{
if (b & 1)
{
ans = ans * a % mod;
}
a = a * a % mod;
b >>= 1;
}
return ans % mod;
}
ll C(ll n, ll m)
{
return (f[n] * inv[f[m]]) % mod * inv[f[n - m]] % mod;
}
int main()
{
cin >> n;
f[0] = 1;
for (int i = 1; i <= maxn; i++)
{
f[i] = (f[i - 1] * i) % mod;
inv[i] = qPow(i, mod - 2);
}
for (int i = n; i >= 1; i--)
{
s[i] = (s[i * 2 + 1] <= n ? s[i * 2 + 1] : 0) + (s[i * 2] <= n ? s[i * 2] : 0) + 1;
}
for (int i = 1; i <= n; i++)
{
dp[i] = 1;
}
for (int i = n; i >= 1; i--)
{
if (i * 2 + 1 <= n)
{
dp[i] = (C(s[i] - 1, s[i * 2 + 1]) * dp[i * 2 + 1]) % mod * dp[i * 2] % mod;
}
}
cout << dp[1] << endl;
return 0;
}