#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2")
using namespace std;
void err(istream_iterator<string> it) {}
template <typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
  cout << *it << " : " << a << endl;
  err(++it, args...);
}
const int N = 40;
long long int dp[N][N];
int main() {
  long long int n, h;
  cin >> n >> h;
  for (int i = 0; i < (N); ++i) dp[i][0] = 1;
  for (long long int i = 1; i <= n; i++) {
    for (long long int j = 1; j <= n; j++) {
      for (int k = 0; k <= j - 1; k++) {
        dp[i][j] += dp[i - 1][k] * dp[i - 1][(j - 1) - k];
      }
    }
  }
  cout << dp[n][n] - dp[h - 1][n] << endl;
  return 0;
}
