#include <bits/stdc++.h>
using namespace std;
int n;
long long m, l, r;
long long num[1000000];
bool flag;
void dfs(long long a, long long b, int step) {
  if (flag) {
    return;
  }
  if (step == n) {
    flag = 1;
    return;
  }
  a += num[step];
  if (a >= b) {
    if ((l - 2 * r) * b + 2 * m >= 2 * (a - b)) {
      dfs(a, b, step + 1);
    }
  } else {
    if ((l - 2 * r) * a + 2 * m >= 2 * (b - a)) {
      dfs(a, b, step + 1);
    }
  }
  a -= num[step];
  b += num[step];
  if (a >= b) {
    if ((l - 2 * r) * b + 2 * m >= 2 * (a - b)) {
      dfs(a, b, step + 1);
    }
  } else {
    if ((l - 2 * r) * a + 2 * m >= 2 * (b - a)) {
      dfs(a, b, step + 1);
    }
  }
  return;
}
int main() {
  while (scanf("%d%lld%lld%lld", &n, &l, &m, &r) != -1) {
    for (int i = 0; i < n; i++) scanf("%lld", &num[i]);
    if (l < 2 * r) {
      printf("No\n");
      continue;
    }
    flag = 0;
    dfs(0, 0, 0);
    if (flag) {
      printf("Yes\n");
    } else {
      printf("No\n");
    }
  }
  return 0;
}
