#include <bits/stdc++.h>
using namespace std;
const long long MAX_N = 40;
long long n, h;
long long C[MAX_N];
long long dp[MAX_N][MAX_N];
long long dfs(long long n, long long h) {
  if (h == 0) return n == 0;
  if (h == 1) return n == 1;
  if (n <= h) return C[n];
  long long &ret = dp[n][h];
  if (ret) return ret;
  ret += dfs(n - 1, h - 1);
  ret += dfs(n - 1, h - 1);
  for (long long i = 1; i < n - 1; i++) {
    ret += dfs(i, h - 1) * dfs(n - i - 1, h - 1);
  }
  return ret;
}
signed main() {
  cin >> n >> h;
  C[0] = C[1] = 1;
  for (long long i = 2; i <= n; i++) {
    for (long long j = 0; j <= i - 1; j++) {
      C[i] += C[j] * C[i - j - 1];
    }
  }
  cout << C[n] - dfs(n, h - 1) << endl;
  return 0;
}
