#P16543. [Dapc2020]Human Pyramid

[Dapc2020]Human Pyramid

题目背景

Barefooted Acrobatics People's Club 想拍一张特别的集体照。他们准备搭建一座人塔:每个人要么站在地面上,要么站在下面两个人的肩膀上。

参与者分为两类:

  • strong:强壮的人;
  • agile:灵巧的人。

为了保证所有人都舒适安全,如果某个灵巧的人在下方支撑别人,那么直接站在他上方的人也必须是灵巧的人。

题目描述

摄影师想拍一座高度为 hh 的完整人塔:

  • 11 层,也就是最底层,有 hh 个人;
  • 22 层有 h1h-1 个人;
  • 依此类推;
  • hh 层,也就是塔顶,只有 11 个人。

因此总人数为

h(h+1)2.\frac{h(h+1)}{2}.

你有恰好 ss 个强壮的人,其余人都是灵巧的人。

人塔中除最底层外,每个位置都由下一层中相邻的两个位置支撑。要求:如果一个位置是灵巧的人,那么直接由这个位置支撑的上层位置也必须是灵巧的人。

你需要计算满足条件的人塔安排方案数。两个方案不同,当且仅当存在某个位置在一个方案中是灵巧的人,在另一个方案中是强壮的人。

由于答案可能很大,请输出方案数对 109+710^9+7 取模后的结果。

输入格式

一行包含两个整数 hhss,分别表示人塔高度和强壮人数。

输出格式

输出一个整数,表示合法安排方案数对 109+710^9+7 取模后的结果。

样例 1

输入

3 3

输出

3

样例 2

输入

5 3

输出

14

数据范围

对于所有测试数据:

1h100,1 \le h \le 100, 0sh(h+1)2.0 \le s \le \frac{h(h+1)}{2}.