#include <bits/stdc++.h>
using namespace std;
vector<pair<long long, long long> > g;
vector<pair<long long, long long> > t;
long long m[2000100];
long long M, L, R, N;
void deal(long long l, long long r) {
  t.clear();
  long long a, b;
  for (int i = 0; i < g.size(); i++) {
    a = g[i].first;
    b = g[i].second;
    if (!(a <= b && 0 <= a && b <= M))
      while (1)
        ;
    a += l;
    b += r;
    if (a > M) continue;
    b = min(b, M);
    t.push_back(make_pair(a, b));
  }
  for (int i = 0; i < g.size(); i++) {
    a = g[i].first;
    b = g[i].second;
    a -= r;
    b -= l;
    if (a >= 0)
      t.push_back(make_pair(a, b));
    else if (a < 0 && b >= 0) {
      a = -a;
      a = min(a, M);
      t.push_back(make_pair(0, max(a, b)));
    } else {
      if (b < -M) continue;
      a = -a;
      b = -b;
      swap(a, b);
      b = min(b, M);
      t.push_back(make_pair(a, b));
    }
  }
  g = t;
}
bool work() {
  g.push_back((make_pair(0, 0)));
  long long l, r;
  if (R > L / 2) return 0;
  for (int i = 1; i <= N; i++) {
    l = R * m[i];
    r = L / 2 * m[i];
    deal(l, r);
  }
  return g.size() > 0;
}
int main() {
  cin >> N >> L >> M >> R;
  for (int i = 1; i <= N; i++) cin >> m[i];
  L *= 2;
  M *= 2;
  R *= 2;
  bool ans = work();
  if (ans)
    printf("Yes\n");
  else
    printf("No\n");
  return 0;
}
