AA 树(AA tree)是一种具有特殊结构的二叉搜索树。每个节点都有一个 值(value) 和一个 层级(level)。值遵循通常的二叉搜索树性质:
- 每个左子节点(以及左子树中的所有节点)的值都小于或等于其父节点的值。
- 每个右子节点(以及右子树中的所有节点)的值都大于或等于其父节点的值。
层级遵循以下规则:
- 每个叶子节点的层级为 $1$。
- 每个左子节点的层级恰好比其父节点小 $1$。
- 每个右子节点的层级等于或比其父节点小 $1$。
- 每个右孙节点的层级严格小于其祖父节点的层级。
- 每个层级大于 $1$ 的节点都有两个子节点。
下面是五个 AA 树的示例,分别包含 $3$、$5$、$5$、$11$ 和 $11$ 个节点。为了清晰起见,与父节点层级相等的右子节点以红色标出。
任务
给定两个数字 $N$ 和 $L$,有多少种方式可以将 $1, 2, \dots, N$ 这些值排列成一棵恰好有 $L$ 个层级的 AA 树?
约束与说明
- 由于原题中对二叉搜索树定义的描述存在错误,本题描述已做微调。
- $1 \leq L \leq 9$
- $1 \leq N \leq 10 \ 000$
| # | 分值 | 数据范围 |
|---|---|---|
| 0 | 0 | 样例 |
| 1 | 19 | $L \leq 4$ |
| 2 | 34 | $5 \leq L \leq 7$ |
| 3 | 47 | 无额外限制 |
样例
输入格式 1
5 2
输出格式 1
2
说明
两种可能的排列如上图中的第 $2$ 幅和第 $3$ 幅所示。
输入格式 2
442 6
输出格式 2
896944318
输入格式 3
7133 9
输出格式 3
980381648