C - Super Viaje

Languages: C, C++, Java, Python, C#
Time & Memory limits: (details)

Fito  va a comenzar un viaje muy largo al oriente cubano. En el camino hay $N$ estaciones de combustible, y sus respectivas locaciones son $g_1, g_2,..., g_N$. Inicialmente Fito  está en la estación $g_1$ y su destino es la estación $g_N$. El auto en el que viaja puede almacenar a lo sumo una cantidad de petróleo que le permite recorrer $M$ kms sin tener que adicionar combustible alguno. Fito puede detenerse en cualquier estación y rellenar el tanque cuando quiera, pero el plan es hacer la menor cantidad de paradas. Ayuda a Fito a calcular la cantidad de formas de hacer esto.

Input

 La primera línea contiene dos enteros $1 < N, M < 1000000$, la cantidad de estaciones de combustible y la cantidad de kilómetros que se pueden recorrer sin detenerse respectivamente. Luego siguen $N$ enteros ordenados de manera creciente, cada uno en una línea, que representan la distancia de cada gasolinera al inicio de la carretera.

Output

La salida es un número entero, que representa la cantidad de formas de planificar un viaje que tenga la menor cantidad de paradas módulo 1000000007.

Sample test(s)

Input
6 3 0 1 3 4 7 10
Output
2