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 CPP):

Solution:
#include<bits/stdc++.h>
using namespace std;

const int N = 1e5+7, M = 1e9+7;
int ll[N];
long long a[N], dp[N], sum[N];

long long getsum(int l, int r) {
    if (r < l)  return 0;
    if (l == 0) return sum[r];
    return sum[r] - sum[l-1];
}

void zero() {
    cout<<0<<endl;
    exit(0);
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n;
    cin>>n;

    long long x, y;
    cin>>x>>y;

    if (x > y)  swap(x, y);

    for (int i=1; i<=n; i++)    cin>>a[i];

    for (int i=1; i<=n; i++) {
        if (i == 1 || a[i-1] > a[i]-x) ll[i] = i;
        else    ll[i] = ll[i-1];
    }

    for (int i=3; i<=n; i++)
        if (a[i] - a[i-2] < x)  zero();

    dp[0] = sum[0] = 1;
    int ptr = 0;
    for (int i=1; i<=n; i++) {
        while (a[ptr+1] <= a[i] - y)   ptr++;

        int en = ptr, st = max(0, ll[i-1]-1);


        dp[i] = getsum(st, en)%M;
        sum[i] = (dp[i] + sum[i-1])%M;
//        cout<<i<<" "<<a[i]<<" --> "<<st<<" "<<en<<" --> "<<dp[i]<<" "<<sum[i]<<endl;

    }

    long long ans = getsum(ll[n]-1, n);
    cout<<(ans%M+M)%M<<endl;
}