编程题
### 问题描述
阿霖是一位将军,他拥有很多位手下,对于第 $i$ 个手下都有一个能力值 $a_i$。一天,阿霖要去打仗了,他要从他的手下里面组一支队伍出来,他需要从手下中以**任意顺序**选择**若干个**组成一支**合理的队伍**,一支合理的队伍需要满足以下条件:
- 队伍队员能力值**非递减**的。
- 对于**任意**两个**相邻**的队员,他们的能力值之差不超过 $x$。
请问阿霖一共有几种不同的合理组队方法,结果对 $10^9 + 7$ 取模。
如果两种方法士兵的选择以及排列不同,则认为这两种方法不同。
### 输入格式
第一行两个整数 $n,x$,表示手下的数量以及最大能力值之差。
第二行 $n$ 个整数数,第 $i$ 个整数表示第 $i$ 个手下的观赏值 $a_i$。
数据范围保证:$1 \leq n \leq 10^5$,$1 \leq x,a_i \leq 10^9$。
### 输出格式
输出一个整数,表示合理组队方法的数量,结果对 $10^9 + 7$ 取模。
### 样例输入 $1$
```text
4 1
1 2 3 4
```
### 样例输出 $1$
```text
16
```
### 样例输入 $2$
```text
3 1
4 5 5
```
### 样例输出 $2$
```text
10
```
### 样例说明
样例 $1$ 中合法队伍有 $[],[1],[2],[3],[4],[1,2],[2,3],[3,4],[1,2,3],[2,3,4],[1,2,3,4]$。
样例 $2$ 中合法队伍有 $[],[1],[2],[3],[1,2],[1,3],[1,2,3],[2,3],[1,3,2],[3,2]$。