#include <bits/stdc++.h>
using namespace std;
const int N = 75;
const int INF = numeric_limits<int>::max();
void read(int &x) {
  x = 0;
  char ch = getchar();
  int f = 1;
  while (!isdigit(ch)) (ch == '-' ? f = -1 : 0), ch = getchar();
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  x *= f;
}
void upd(long long &x, long long y) { x += y; }
int n, h;
long long ans, f[40][40][40], c[N][N];
signed main() {
  read(n);
  read(h);
  for (int i = 0; i <= n; ++i) c[i][0] = 1;
  for (int i = 1; i <= n << 1; ++i)
    for (int j = 1; j <= n << 1; ++j) c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
  f[1][1][1] = 1;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j)
      for (int k = 1; k <= n; ++k) {
        if (j == n && i >= h) ans += f[i][j][k];
        for (int x = min(n - j, k * 2); x; --x) {
          upd(f[i + 1][j + x][x], f[i][j][k] * c[2 * k][x]);
        }
      }
  printf("%I64d", ans);
  return 0;
}
