CF9D How many trees?

题目描述

在某个非常古老的文本文件中记载着伟大的智慧。这份智慧如此深奥,以至于无人能够破译,就连 Mainframe 中最年长的居民 Phong 也无法解读。但他仍然设法从中获取了一些信息。例如,他得知用户启动游戏是为了消遣——随后可怕的「游戏立方体」便会降临城市,给那些无法赢得游戏的模块带来毁灭。 当然,自从守护者 Bob 出现在 Mainframe 之后,许多模块便不再惧怕游戏立方体。因为 Bob(至今仍存活)从未被用户击败过,而且他总是会插手游戏立方体,这是由他的程序决定的。 然而,当游戏立方体坠落在失落之角时仍可能发生不愉快的情况。因为那里居住着一个讨厌的病毒——Hexadecimal,她非常古怪且热衷于游戏。因此,Bob 不得不先与她玩一场游戏,然后才能面对用户。 这次 Hexadecimal 设计了如下游戏:Bob 必须跳过若干个含有 $n$ 个节点的二叉搜索树。需要提醒的是,二叉搜索树满足以下条件:每个节点具有不同的键,对任一节点而言,其左子树的所有节点键值均小于该节点键值,右子树的所有节点键值均大于该节点键值。所有键均为 $1$ 到 $n$ 的不同正整数。每个节点最多可有 $2$ 个子节点,或没有子节点(此时该节点为叶节点)。 在 Hexadecimal 的游戏中,所有树各不相同,但每棵树的高度均不低于 $h$。本题中「高度」定义为:从根节点到最远叶子节点路径上的最大节点数(包含根节点和叶子节点本身)。当 Bob 跳过一棵树时,该树将消失。只有当所有树都被跳过时,Bob 才能获得立方体的访问权限。请你求出最坏情况下 Bob 需跳过的树的数量。

输入格式

输入包含两个用空格分隔的正整数 $n$ 和 $h$($n \leq 35$,$h \leq n$)。

输出格式

输出一行答案。保证答案不超过 $9 \times 10^{18}$。