#include <bits/stdc++.h>
using namespace std;
int n;
long long dp[40][40][40];
bool vis[40][40];
void dfs(int l, int r) {
  if (l == r || vis[l][r]) return;
  vis[l][r] = 1;
  dfs(l + 1, r);
  dfs(l, r - 1);
  for (int i = 1; i < n; i++)
    dp[l][r][i + 1] += dp[l + 1][r][i] + dp[l][r - 1][i];
  for (int i = l + 1; i < r; i++) {
    dfs(l, i - 1);
    dfs(i + 1, r);
    for (int j = 1; j < n; j++)
      for (int k = 1; k < n; k++)
        dp[l][r][max(j, k) + 1] += dp[l][i - 1][j] * dp[i + 1][r][k];
  }
}
int main() {
  int H;
  cin >> n >> H;
  for (int i = 1; i <= n; i++) dp[i][i][1] = 1;
  dfs(1, n);
  long long ans = 0;
  for (int i = H; i <= n; i++) ans += dp[1][n][i];
  cout << ans << endl;
  return 0;
}
