#include<bits/stdc++.h>
using namespace std;
#define LL long long

const int maxn=1e5+10;
const int mo=1e9+7;

int n,dp[maxn],pre[maxn];
LL A,B,S[maxn];

int main()
{
#ifdef h10
	freopen("C.in","r",stdin);
	freopen("C.out","w",stdout);
#endif
	int i,L=0,R=0;
	scanf("%d%lld%lld",&n,&A,&B);
	if (A>B) swap(A,B);
	for (i=1;i<=n;i++)
		scanf("%lld",&S[i]);
	for (i=3;i<=n;i++)
		if (S[i]-S[i-2]<A) {puts("0"); return 0;}
	S[0]=S[1]-B;
	dp[0]=pre[0]=1;
	for (i=1;i<=n;i++)
	{
		while (S[i]-S[R+1]>=B) R++;
		if (L<=R) dp[i]=(pre[R]+mo-(L?pre[L-1]:0))%mo;
		pre[i]=(pre[i-1]+dp[i])%mo;
		if (S[i]-S[i-1]<A) L=i-1;
	}
	printf("%d\n",(pre[n]+mo-(L?pre[L-1]:0))%mo);
}
