#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll;
 
const ll INF = 1000000000000000009;
const ll MOD = 1000000007;
 
ll s[100005];
int ca[100005], cb[100005];
ll dpa[100005], dpb[100005];
 
int main()
{
    ll n, a, b;
    cin >> n >> a >> b;
    s[0] = -INF;
    for(int i = 1; i <= n; i++) cin >> s[i];
    for(int i = 1; i <= n; i++){
        ca[i] = ca[i - 1];
        cb[i] = cb[i - 1];
        if(s[i] - s[i - 1] >= a) ca[i]++;
        if(s[i] - s[i - 1] >= b) cb[i]++;
    }
    dpa[0] = dpa[1] = dpb[0] = dpb[1] = 1;
    for(int i = 2; i <= n; i++){
        if(ca[i] - ca[i - 1]) dpa[i] = (dpa[i - 1] + dpb[i - 1]) % MOD;
        else{
            int j = upper_bound(s, s + n + 1, s[i] - a) - s;
            if(cb[i - 1] - cb[j] == (i - 1) - j) dpa[i] = dpb[j];
        }
        if(cb[i] - cb[i - 1]) dpb[i] = (dpa[i - 1] + dpb[i - 1]) % MOD;
        else{
            int j = upper_bound(s, s + n + 1, s[i] - b) - s;
            if(ca[i - 1] - ca[j] == (i - 1) - j) dpb[i] = dpa[j];
        }
    }
    cout << (dpa[n] + dpb[n]) % MOD << endl;
}