#include <bits/stdc++.h>
using namespace std;
int main() {
  int N, M, L, R;
  scanf("%d%d%d%d", &N, &L, &M, &R);
  R *= 2;
  L *= 2;
  M *= 2;
  int l = R, r = L / 2;
  vector<pair<int, int> > las, cur;
  las.push_back(pair<int, int>(0, 0));
  for (int i = 1; i <= N; ++i) {
    int m;
    scanf("%d", &m);
    cur.clear();
    int c = m * l, d = m * r;
    for (int i = 0; i < ((int)las.size()); ++i) {
      int a = las[i].first, b = las[i].second;
      int q = a + c, w = min(b + d, M);
      if (q <= w) cur.push_back(pair<int, int>(q, w));
      q = max(a - d, -M);
      w = b - c;
      if (q <= w) cur.push_back(pair<int, int>(q, w));
    }
    sort(cur.begin(), cur.end());
    las.clear();
    for (int j = 0; j < ((int)cur.size()); ++j) {
      if (((int)las.size()) == 0 ||
          las[((int)las.size()) - 1].second < cur[j].first) {
        las.push_back(cur[j]);
      } else {
        las[((int)las.size()) - 1].second =
            max(las[((int)las.size()) - 1].second, cur[j].second);
      }
    };
  }
  bool flag = false;
  for (int i = 0; i < ((int)las.size()); ++i) {
    if (las[i].first <= M && las[i].second >= M) {
      flag = true;
      break;
    }
  }
  if (flag)
    puts("Yes");
  else
    puts("No");
  return 0;
}
