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:
from bisect import bisect_left
N,A,B=map(int,input().split())
inf,mod=float("inf"),10**9+7
S=[int(input()) for i in range(N)]
St_A=[0]*N
St_B=[0]*N
J_A,J_B=[0],[0]
for i in range(N):
  St_A[i]=bisect_left(S,S[i]+A)-1
  St_B[i]=bisect_left(S,S[i]+B)-1
  J_A.append(J_A[-1]+int(St_A[i]!=i))
  J_B.append(J_B[-1]+int(St_B[i]!=i))
  
#print(St_A,St_B)
#print(J_A,J_B)

dp_A=[0]*N
dp_B=[0]*N
dp_A[-1],dp_B[-1]=1,1
for i in range(N-1)[::-1]:
  if St_A[i]==i:
    dp_A[i]=(dp_A[i+1]+dp_B[i+1])%mod
  else:
    if J_B[St_A[i]]-J_B[i+1]==0:
      dp_A[i]=dp_B[St_A[i]]
    else:
      dp_A[i]=0
  if St_B[i]==i:
    dp_B[i]=(dp_A[i+1]+dp_B[i+1])%mod
  else:
    if J_A[St_B[i]]-J_A[i+1]==0:
      dp_B[i]=dp_A[St_B[i]]
    else:
      dp_B[i]=0
#print(dp_A)
#print(dp_B)
print((dp_A[0]+dp_B[0])%mod)