#include <bits/stdc++.h>
using namespace std;
int n, h, l, r;
int a[2000];
map<pair<int, int>, int> dp;
bool check(int a) { return (a <= r && a >= l) ? 1 : 0; }
int make_dp(int s, int t) {
  if (dp[{s, t}] != 0) return dp[{s, t}];
  return dp[{s, t}] = check(t) + max(make_dp(s + 1, (t + a[s]) % h),
                                     make_dp(s + 1, (t + a[s] - 1) % h));
}
int main() {
  cin >> n >> h >> l >> r;
  for (int i = 0; i < int(n); i++) cin >> a[i];
  for (int i = 0; i < int(h); i++) dp[{n, i}] = check(i) + 1;
  make_dp(0, 0);
  if (l == 0) dp[{0, 0}]--;
  cout << dp[{0, 0}] - 1;
  return 0;
}
