#include <bits/stdc++.h>
using namespace std;
inline void checkmax(int &x, int y) {
  if (y > x) x = y;
}
inline void checkmin(int &x, int y) {
  if (y < x) x = y;
}
inline void read(int &x) {
  char ch = getchar();
  x = 0;
  int f = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  x *= f;
}
inline void read2(long long &x) {
  char ch = getchar();
  x = 0;
  int f = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  x *= f;
}
int n, h;
long long dp[40][40];
int main() {
  read(n);
  read(h);
  for (register int i = 0; i <= n; ++i) dp[0][i] = 1;
  for (register int i = 1; i <= n; ++i)
    for (register int j = 1; j <= n; ++j)
      for (register int k = 0; k < j; ++k)
        dp[j][i] += dp[k][i - 1] * dp[j - k - 1][i - 1];
  return cout << dp[n][n] - dp[n][h - 1], 0;
}
