#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e6 + 7;
int n;
long long dp[2][maxn];
int main() {
  cin >> n;
  int now = 1;
  dp[0][1] = 1;
  dp[0][2] = 1;
  long long ans = 0;
  ans += dp[0][n];
  for (int i = 1; i <= 19; i++) {
    memset(dp[now], 0, sizeof(dp[now]));
    for (int j = (1 << (i)) - 1; j < (1 << (i + 1)) - 1; j++) {
      if (dp[now ^ 1][j] == 0) continue;
      for (int l = (1 << (i)) - 1; l < (1 << (i + 1)) - 1; l++) {
        if (j + l + 1 < maxn && l % 2 == 0)
          dp[now][j + l + 1] += dp[now ^ 1][j] * dp[now ^ 1][l];
      }
    }
    ans += dp[now][n];
    now ^= 1;
  }
  cout << ans << endl;
  return 0;
}
