#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

const long long N = 10000;
vector<long long> f[N];
vector<long long> pack;
long long n, l, m ,r;

int main()
{
	ios::sync_with_stdio(false);
	cin >> n >> l >> m >> r;
	l *= 2; m *= 2; r *= 2;
	for (long long i = 0; i <= n; ++i)
		f[i] = vector<long long>(m + 10, 0);
	for (long long i = 0; i < n; ++i) {
		long long weight;
		cin >> weight;
		pack.push_back(weight);
	}
	f[0][0] = 1;
	f[0][1] = -1;
	for (long long i = 0; i <= n; ++i) {
		for (long long j = 1; j <= m; ++j)
			f[i][j] += f[i][j - 1];
		if (i == n) break;
		for (long long j = 0; j <= m; ++j) {
			if (!f[i][j]) continue;
			long long kl = r * pack[i], kr = l / 2 * pack[i];
			long long cl, cr;
			//part1
			if(j - kl >= 0 && j - kr >= 0) {
				cl = j - kr;
				cr = j - kl;
			} else if (j - kl <= 0 && j - kr <= 0) {
				cl = abs(j - kl);
				cr = abs(j - kr);
			} else {
				cl = 0;
				cr = max(abs(j - kr), abs(j - kl));
			}
			if(cl <= m) {
				cr = min(cr, m);
				f[i + 1][cl]++;
				f[i + 1][cr + 1]--;
			}
			//part2
			cl = j + kl, cr = j + kr;
			if(cl <= m) {
				cr = min(cr, m);
				f[i + 1][cl]++;
				f[i + 1][cr + 1]--;
			}
					
		}
	}
	for (long long i = 0; i <= m; ++i)
		if (f[n][i]) {
			cout << "Yes" << endl;
			return 0;
		}
	cout << "No" << endl;
	return 0;
}