#arc068d. [arc068_d]Solitaire

[arc068_d]Solitaire

问题描述

Snuke决定玩一个游戏,他有NN张卡片和一个双向队列。每张卡片上有一个从11NN的整数,初始时队列为空。

Snuke会按顺序将卡片插入队列的开头或末尾。然后,他会重复进行以下动作NN次:从队列的开头或末尾取出一张卡片并吃掉。

之后,根据被吃掉的卡片上的整数,按照吃掉的顺序构造一个整数序列。在这种方式下可以得到的序列中,找出第KK个元素为11的序列的数量。将答案对109+710^9+7取模后输出。

约束条件

  • 1KN2,0001 \leq K \leq N \leq 2{,}000

输入

从标准输入读入输入数据,格式如下:

NN KK

输出

输出结果,对109+710^9+7取模。


示例输入 1

2 1

示例输出 1

1

满足条件的序列有一个:1,21, 2。一种获得此序列的方式是:

  • 将卡片1122都插入队列的末尾。
  • 从队列的开头取出卡片两次。

示例输入 2

17 2

示例输出 2

262144

示例输入 3

2000 1000

示例输出 3

674286644