#include <bits/stdc++.h>
using namespace std;
char IO;
inline long long rd() {
  long long res = 0, f = 1;
  while (IO = getchar(), IO < 48 || IO > 57)
    if (IO == '-') f = 0;
  do res = (res << 3) + (res << 1) + (IO ^ 48);
  while (IO = getchar(), IO >= 48 && IO <= 57);
  if (f) return res;
  return -res;
}
const long long M = 40;
long long dp[M][M][M], ans, C[M][M];
int main() {
  long long n = rd(), h = rd();
  C[0][0] = 1;
  for (long long i = 1, iend = n; i <= iend; ++i) {
    C[i][0] = 1;
    for (long long j = 1, jend = i; j <= jend; ++j)
      C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
  }
  dp[1][1][1] = 1;
  for (long long i = 1, iend = n; i <= iend; ++i)
    for (long long j = 1, jend = i; j <= jend; ++j)
      for (long long k = 1, kend = i - j + 1; k <= kend; ++k)
        for (long long l = 1, lend = k * 2; l <= lend; ++l)
          if (i + l <= n) dp[i + l][j + 1][l] += dp[i][j][k] * C[2 * k][l];
  for (long long i = h, iend = n; i <= iend; ++i)
    for (long long j = 1, jend = n - i + 1; j <= jend; ++j) ans += dp[n][i][j];
  cout << ans << endl;
}
