H. 账号已注销,我想账号已注销了
time limit per test
2 с
memory limit per test
512 megabytes
input
standard input
output
standard output

风神从哪儿来

受伤的狗尾巴摇晃的更热烈

想你了Gu5enPai

紧握着你的手把把敌人给锁裂

我们的队 就像泥头车

车头看透彻了

慢 慢 队友都走了

下场比赛 冠军梦醒了

先打白金吧

看 淡 弹幕独轮车

诶 像一直在被优化

没队要的是我

主播不会吹唢呐

没法把你们给送走

开播成都四点

窗外日不在

睁开眼

想看清也(青野)看不清了

喝到起不来

至少酬勤我还记得

找一个地方盲扎

飞起半空中

是谁又说像他(想他)

什么风都吹不散呀

纯净流开启

不晓得哪时碎的甲(那是谁的家)

题目描述

似去的卡神试图通过注销账号来召回天上的 aono,他找到了队中最会祷告的狙神来做法招魂。

目前狙神手中拥有 n 柱香,依次编号 1, 2, ..., n,对应地有高度 a1, a2, ..., an。现在狙神要从这 n 柱香中选出至少一柱,将他们按原顺序构成一个新的序列,并丢掉其他未选中的香。考虑到卡神的身高,为了让招魂成功,狙神应当使相邻两柱香的高度差  ≥ k。特殊地,如果只剩一支香,那么招魂总会成功。

狙神希望知道有几种合法的选取方法。两种选取方法彼此不同,当且仅当存在某个位置 i 恰好只在一个方法中被选取。

毫无疑问面对如此巨大的数据狙神的大脑很快就过载了,作为铁血 ftj,出题人希望你能帮助狙神算出这个数字模 109 + 7 是多少。

Input

输入数据有两行:

第一行两个整数 n, k 表示有几柱香和高度差。

第二行 n 个整数,ai 表示第 i 柱香的高度。

1 ≤ n ≤ 500000, 0 ≤ ai ≤ 100000, 0 ≤ k ≤ 100

Output

输出一个整数表示组合数,答案要求模 109 + 7。

Example
Input
4 2
1 2 3 4
Output
7
Note

对于给出样例,合法的选取方法是:{a1}, {a2}, {a3}, {a4}, {a1, a3}, {a1, a4}, {a2, a4}