#include <bits/stdc++.h>
long long calc(std::vector<std::vector<long long> >& x, int n, int h) {
  if (x[n][h] == -1) {
    long long val1(calc(x, n - 1, h - 1));
    long long val2(0);
    for (int i(1); i < (n - 1); ++i) {
      if (h - 1 <= i) {
        long long val3(0);
        for (int j(1); j < std::min((n - 1) - i + 1, h - 1); ++j) {
          val3 += calc(x, (n - 1) - i, j);
        }
        val1 += calc(x, i, h - 1) * val3;
        if (h - 1 <= (n - 1) - i) {
          val2 += calc(x, i, h - 1) * calc(x, (n - 1) - i, h - 1);
        }
      }
    }
    x[n][h] = 2 * val1 + val2;
  }
  return x[n][h];
}
int main() {
  int n;
  int h;
  std::cin >> n >> h;
  std::vector<std::vector<long long> > x(n + 1,
                                         std::vector<long long>(n + 1, -1));
  for (int i(0); i <= n; ++i) {
    x[i][1] = 0;
  }
  x[1][1] = 1;
  long long r(0);
  for (int i(h); i <= n; ++i) {
    r += calc(x, n, i);
  }
  std::cout << r << '\n';
  return 0;
}
