func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, h, f[100], g[100][100];   long long fun(long long x) {     int i;     if (f[x] > -1) return 0;     f[x] = 0;     for (i = 0; i < x; ++i) {       fun(i);       fun(x - i - 1);       f[x] += f[i] * f[x - i - 1];     }     return 0;   }   long long rec(long long x, long long d) {     int i;     if (g[x][d] > -1) return 0;     g[x][d] = 0;     if (d > x) return 0;     if (d == 1) {       g[x][d] = f[x];       return 0;     }     for (i = 0; i < x; ++i) {       rec(i, d - 1);       rec(x - i - 1, d - 1);       g[x][d] += g[i][d - 1] * f[x - i - 1] + g[x - i - 1][d - 1] * f[i] -                  g[i][d - 1] * g[x - i - 1][d - 1];     }     return 0;   }   int main() {     int i, j;     cin >> n >> h;     for (i = 0; i <= n; ++i) f[i] = -1;     f[0] = 1;     for (i = 0; i <= n; ++i)       for (j = 0; j <= n; ++j) g[i][j] = -1;     g[0][0] = 1;     fun(n);     rec(n, h);     cout << g[n][h] << endl;     return 0;   }   