#include <bits/stdc++.h>
using std::vector;
const double EPS = 1e-9;
vector<long long> v;
int n;
long long m, L, R;
long long sumA, sumB;
int sign(double x) {
  if (fabs(x) < EPS) return 0;
  return x < 0 ? -1 : 1;
}
bool check() {
  if (R * 2 > L) return 0;
  for (vector<long long>::iterator it = v.begin(); it != v.end(); it++) {
    double AL = sumA * R, AR = sumA * L / 2.0;
    double BL = sumB * R, BR = sumB * L / 2.0;
    if (sign(AR - BL) < 0 || sign(AL - BR) > 0) {
      double tmp = std::min(fabs(AL - BR), fabs(BL - AR));
      if (sign(tmp - m) <= 0) return 1;
    } else
      return 1;
    sumA += *it;
    sumB -= *it;
  }
  return 0;
}
int main() {
  while (scanf("%d", &n) == 1) {
    scanf("%lld%lld%lld", &L, &m, &R);
    sumA = sumB = 0;
    v.clear();
    for (int i = 1; i <= n; i++) {
      long long x;
      scanf("%lld", &x);
      sumB += x;
      v.push_back(x);
    }
    if (check())
      puts("Yes");
    else
      puts("No");
  }
  return 0;
}
