CF838D Airplane Arrangements

题目描述

有一架飞机,从前到后有 $n$ 排座位。将会有 $m$ 人登上这架飞机。 这架飞机的前面和后面都有一个入口。 每个人都有一个分配的座位。可能会有多个人被分配到同一个座位。人们将一个接一个地登机,从第 $1$ 个人开始。每个人可以独立选择从前面入口或后面入口进入飞机。 当一个人走进飞机时,他们会直接走到他们分配的座位并尝试坐下。如果座位被占用,他们会继续朝着他们走进来的方向走,直到找到一个空座位——他们会选择第一个找到的空座位。如果他们到达排的尽头仍然没有找到座位,他们会感到愤怒。 找出为乘客分配座位并登机,且没有任何人生气的方案数量。如果存在一个乘客在两种方案中选择了不同的入口,或者分配的座位不同,则这两种方案是不同的。输出这个方案数对 $10^9 + 7$ 取模的结果。

输入格式

输入的第一行将包含两个整数 $n, m (1  \le  m  \le  n  \le  1000000)$,分别表示座位的数量和乘客的数量。

输出格式

输出一个数字,即方案数,对 $10^9 + 7$ 取模。

说明/提示

在这里,我们将乘客用他们被分配的座位,以及他们来自哪一侧(前面为 `F`,后面为 `B`)来表示。 例如,一种有效的方式是 3B, 3B, 3B(即所有乘客都被分配到座位 3,并且都从后面入口进来)。另一种有效的方式是 2F, 1B, 3F。 一种无效的方式是 2B, 2B, 2B,因为第三个乘客会在前面找不到座位。