#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000");
using namespace std;
long long dp[36][36];
long long L[36], R[36];
long long dfs(int n, int h) {
  if (dp[n][h] != -1) return dp[n][h];
  if (n < L[h] || R[h] < n) return dp[n][h] = 0;
  dp[n][h] = 0;
  for (int i = 0; i <= n - 1; ++i)
    for (int j = 0; j <= h - 1; ++j)
      dp[n][h] +=
          (1 + (j == h - 1 ? 0 : 1)) * dfs(i, j) * dfs(n - i - 1, h - 1);
  return dp[n][h];
}
int main() {
  int n, h, i, j;
  while (scanf("%d %d", &n, &h) != EOF) {
    memset(dp, -1, sizeof(dp));
    dp[0][0] = 1, dp[1][1] = 1;
    L[0] = 0, R[0] = 0;
    for (i = 1; i <= n; ++i) L[i] = i, R[i] = R[i - 1] * 2 + 1;
    long long ans = 0;
    for (i = h; i <= n; ++i) ans += dfs(n, i);
    printf("%I64d\n", ans);
  }
  return 0;
}
