#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=2010;
int a[N],f[N][N];
int read() {
int res=0,ch,flag=0;
if((ch=getchar())=='-') //判断正负
flag=1;
else if(ch>='0'&&ch<='9') //得到完整的数
res=ch-'0';
while((ch=getchar())>='0'&&ch<='9')
res=res*10+ch-'0';
return flag?-res:res;
}
int main() {
int n=read(),h=read(),l=read(),r=read();
//不睡觉的时间
for(int i=1; i<=n; i++)
a[i]=read();
memset(f,-1,sizeof f);
for(int i=0; i<h; i++)
f[0][i]=0;
//枚举睡觉次数
for(int i=1; i<=n; i++)
for(int j=0; j<h; j++) {
if(f[i-1][j]==-1)
continue;
int res;
//j是醒来的时间
//res是进入下一次睡眠的时间
res=(j+a[i]-1)%h;
f[i][res]=max(f[i][res],f[i-1][j]+(l<=res&&res<=r));
res=(j+a[i])%h;
f[i][res]=max(f[i][res],f[i-1][j]+(l<=res&&res<=r));
}
int ans=0;
for(int i=0; i<h; i++)
ans=max(ans,f[n][i]);
cout<<ans<<endl;
return 0;
}