Problem: There is a set consisting of N distinct integers. The i-th smallest element in this set is S_i. We want to divide this set into two sets, X and Y, such that:

* The absolute difference of any two distinct elements in X is A or greater.
* The absolute difference of any two distinct elements in Y is B or greater.



How many ways are there to perform such division, modulo 10^9 + 7? Note that one of X and Y may be empty.

Constraints

* All input values are integers.
* 1 ≦ N ≦ 10^5
* 1 ≦ A , B ≦ 10^{18}
* 0 ≦ S_i ≦ 10^{18}(1 ≦ i ≦ N)
* S_i < S_{i+1}(1 ≦ i ≦ N - 1)

Input

The input is given from Standard Input in the following format:


N A B
S_1
:
S_N


Output

Print the number of the different divisions under the conditions, modulo 10^9 + 7.

Examples

Input

5 3 7
1
3
6
9
12


Output

5


Input

7 5 3
0
2
4
7
8
11
15


Output

4


Input

8 2 9
3
4
5
13
15
22
26
32


Output

13


Input

3 3 4
5
6
7


Output

0

Solution (in PYTHON3):

Solution:
mod=10**9+7

import bisect,sys

input=sys.stdin.readline

N,A,B=map(int,input().split())
S=[int(input()) for i in range(N)]

datax=[i for i in range(N+1)]
datay=[i for i in range(N+1)]

for i in range(2,N+1):
    if S[i-1]-S[i-2]>=A:
        datax[i]=datax[i-1]
    if S[i-1]-S[i-2]>=B:
        datay[i]=datay[i-1]

#print(datax)
#print(datay)

dpx=[0]*(N+1)
imosx=[0]*(N+1)
dpy=[0]*(N+1)
imosy=[0]*(N+1)
dpx[0]=1
dpy[0]=1
imosx[0]=1
imosy[0]=1

for i in range(1,N):
    id=bisect.bisect_right(S,S[i]-B)
    R=min(id+1,i)
    L=datax[i]
    if R>=L:
        dpx[i]=(imosy[R-1]-imosy[L-2]*(L>=2))%mod
        imosx[i]=(imosx[i-1]+dpx[i])%mod
    else:
        imosx[i]=imosx[i-1]

    id=bisect.bisect_right(S,S[i]-A)
    R=min(id+1,i)
    L=datay[i]
    if R>=L:
        dpy[i]=(imosx[R-1]-imosx[L-2]*(L>=2))%mod
        imosy[i]=(imosy[i-1]+dpy[i])%mod
    else:
        imosy[i]=imosy[i-1]

i=N

R=i
L=datax[i]
if R>=L:
    dpx[i]=(imosy[R-1]-imosy[L-2]*(L>=2))%mod
    imosx[i]=(imosx[i-1]+dpx[i])%mod
else:
    imosx[i]=imosx[i-1]

R=i
L=datay[i]
if R>=L:
    dpy[i]=(imosx[R-1]-imosx[L-2]*(L>=2))%mod
    imosy[i]=(imosy[i-1]+dpy[i])%mod
else:
    imosy[i]=imosy[i-1]

#print(dpx)
#print(dpy)
print((dpx[-1]+dpy[-1])%mod)