#include <bits/stdc++.h>
using namespace std;
long long dp[36][36];
long long dfs(int n, int h) {
  if (!n && !h) return 1;
  if ((n && !h) || (h && !n)) return 0;
  long long ret = dp[n][h];
  if (ret != -1) return ret;
  ret = 0;
  for (int m = 1; m <= n; m++) {
    long long a = dfs(m - 1, h - 1);
    long long b = 0;
    if (a) {
      for (int i = 0; i <= h - 1; i++) {
        b += dfs(n - m, i);
      }
    }
    long long c = dfs(n - m, h - 1);
    long long d = 0;
    if (c) {
      for (int i = 0; i <= h - 2; i++) {
        d += dfs(m - 1, i);
      }
    }
    ret += a * b + c * d;
  }
  dp[n][h] = ret;
  return ret;
}
int main() {
  int n, h;
  cin >> n >> h;
  memset(dp, -1, (36 * 36) * sizeof(long long));
  long long ans = 0;
  for (int i = h; i <= n; i++) {
    ans += dfs(n, i);
  }
  cout << ans << endl;
}
