#include <bits/stdc++.h>
using namespace std;
int main() {
  int num_nodes, height;
  cin >> num_nodes >> height;
  unsigned long long **num_trees = new unsigned long long *[height + 1];
  for (int h = 0; h < height; ++h)
    num_trees[h] = new unsigned long long[num_nodes];
  num_trees[0][0] = 1;
  for (int h = 1; h < height; ++h) num_trees[h][0] = 0;
  for (int h = 0; h < height; ++h) {
    int len = num_nodes - (height - h) + 1;
    for (int n = 1; n < len; ++n) {
      if (n < h) {
        num_trees[h][n] = 0;
        continue;
      }
      int new_height = max(h - 1, 0);
      unsigned long long sum{0};
      for (int num_left_child = 0; num_left_child <= n - 1; ++num_left_child) {
        sum += (num_trees[new_height][num_left_child] *
                    num_trees[0][n - 1 - num_left_child] +
                num_trees[new_height][n - 1 - num_left_child] *
                    num_trees[0][num_left_child] -
                num_trees[new_height][num_left_child] *
                    num_trees[new_height][n - 1 - num_left_child]);
      }
      num_trees[h][n] = sum;
    }
  }
  unsigned long long rslt{0};
  int new_height = max(height - 1, 0);
  for (int num_left_child = 0; num_left_child <= num_nodes - 1;
       ++num_left_child) {
    rslt += (num_trees[new_height][num_left_child] *
                 num_trees[0][num_nodes - 1 - num_left_child] +
             num_trees[new_height][num_nodes - 1 - num_left_child] *
                 num_trees[0][num_left_child] -
             num_trees[new_height][num_left_child] *
                 num_trees[new_height][num_nodes - 1 - num_left_child]);
  }
  cout << rslt << endl;
  return 0;
}
