#include <bits/stdc++.h>
using namespace std;
int n, dp[1000005][2][2];
int add(int a, int b) {
  long long ans = 1LL * a + b;
  return ans >= ((long long)998244353) ? ans - ((long long)998244353) : ans;
}
int mul(int a, int b) {
  long long ans = 1LL * a * b;
  return ans >= ((long long)998244353) ? ans % ((long long)998244353) : ans;
}
int parity(int n, int p) {
  int val = (n + 1) / 2;
  return (val & 1) ? p : 1 - p;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int a = 0; a < 2; ++a) {
    for (int b = 0; b < 2; ++b) {
      dp[0][a][b] = 1;
      dp[1][a][b] = a != b;
    }
  }
  for (int i = 2; i <= n; ++i) {
    for (int a = 0; a < 2; ++a) {
      for (int b = 0; b < 2; ++b) {
        int p = parity(i, b);
        if (i & 1) {
          dp[i][a][b] =
              mul(dp[i / 2][p][b], dp[i / 2][1 - p][1 - p]) * (a != p);
        } else {
          int v1 = mul(dp[i / 2 - 1][p][b], dp[i / 2][1 - p][1 - p]) * (a != p);
          int v2 = mul(dp[i / 2][1 - p][b], dp[i / 2 - 1][p][p]) * (a == p);
          dp[i][a][b] = add(v1, v2);
        }
      }
    }
  }
  printf("%d\n", add(dp[n][0][1], dp[n][1][1]));
}
