#include<bits/stdc++.h>

#define F first
#define S second
#define pb push_back
#define ll long long
#define int long long 

using namespace std ;

const int MAXN = 101 * 1001 , MOD = 1e9 + 7  ;

int dp[MAXN][2] , a[MAXN] , ps[MAXN][2];

int nxt[MAXN][2] ;

int32_t main()
{
    ios::sync_with_stdio(0) ; cin.tie(0) ;
    int n , x[2];
    cin >> n >> x[0] >> x[1] ;
    for(int i = 0 ; i < n ; i ++ )
        cin >> a[i] ;
    dp[n-1][0] = dp[n-1][1] = 1 ;
    int last[2] ;
    last[0] = last[1] = n  ;
    dp[n][0] = dp[n][1] = 1 ;
    ps[n-1][0] = ps[n-1][1] = 1 ;
    nxt[n-1][0] = nxt[n-1][1] = n ;
    for(int i = n - 2 ; i > -1 ; i -- )
    {
        for(int q = 0 ; q < 2 ; q ++ ) {
            int j = lower_bound(a,a+n,a[i]+x[q]) - a ;
            if(last[q]<j)
                continue ;
            if(j==i+1)
                dp[i][q] = (dp[i+1][0] + dp[i+1][1]) % MOD ;
            else
                dp[i][q] = dp[j-1][1-q] ;
        }
        if(a[i+1]-a[i]<x[0])
            last[1] = i + 1  ;
        if(a[i+1]-a[i]<x[1])
            last[0] = i + 1 ;
    }
    cout << (dp[0][0] + dp[0][1] ) % MOD << endl ; ;
}