#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
const long long mod = 998244353;
int n;
long long sm[N];
long long pre(int x) {
  if (x == 0) return 0;
  long long &ret = sm[x];
  if (ret != -1) return ret;
  x--;
  ret = pre(x / 2) + pre((x + 1) / 2) + x;
  return ret;
}
long long dp[N][2][2][2];
long long solve(int cnt, bool d, bool p, bool start) {
  if (cnt == 0) return 1;
  long long &ret = dp[cnt][d][p][start];
  if (ret != -1) return ret;
  ret = 0;
  bool x = start;
  long long val = pre(cnt);
  int w = max(1, (cnt / 2) - 1);
  int e = min(cnt, w + 3);
  x = (start ^ ((w - 1) & 1));
  for (int i = w; i <= e; i++) {
    bool can = 0;
    if (cnt == n)
      can = 1;
    else {
      if (d == 1 && p == x)
        can = 1;
      else if (d == 0 && p != x)
        can = 1;
    }
    if (can && val == pre(i - 1) + pre(cnt - i) + cnt - 1) {
      ret += (solve(i - 1, 0, x, start) * 1ll * solve(cnt - i, 1, x, x ^ 1) %
              mod) %
             mod;
      ret %= mod;
    }
    x ^= 1;
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  memset(sm, -1, sizeof(sm));
  memset(dp, -1, sizeof(dp));
  cin >> n;
  cout << solve(n, 0, 0, 1) << endl;
  return 0;
}
