func_code_string: #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;   }   