#include <iostream>
#include <iomanip>
#include <sstream>
#include <cstdio>
#include <string>
#include <vector>
#include <algorithm>
#include <complex>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <cassert>
#include <climits>
#include <queue>
#include <set>
#include <map>
#include <valarray>
#include <bitset>
#include <stack>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)n;++i)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define ALL(c) (c).begin(), (c).end()
typedef long long ll;
typedef pair<int,int> pii;
const int INF = 1<<29;
const double PI = acos(-1);
const double EPS = 1e-8;

int m[1000];
bool dp[40010];
bool next[40010];

int main() {
  int N,L,M,R;
  cin>>N>>L>>M>>R;
  REP(i,N) cin >> m[i];
  R*=2;
  L*=2;
  M*=2;
  int MM = 2*M;
  dp[M] = 1;
  REP(i,N) {
    REP(j,MM+1)next[j]=0;
    int ma = m[i]*L/2;
    int mi = m[i]*R;
    REP(j,MM+1) {
      if (dp[j]) {
        // 右
        if (j+mi<=MM) {
          next[min(MM,j+ma)]=1;
          next[j+mi]=1;
        }
        // 左
        if (j-mi>=0) {
          next[max(0,j-ma)]=1;
          next[j-mi]=1;
        }
      }
    }
    bool f = 0;
    REP(j,MM+1) {
      dp[j]=next[j];
      f|=dp[j];
    }
    // REP(j,MM+1)cout<<dp[j]<<" ";cout<<endl;
    if (!f) {
      cout << "No" << endl;
      return 0;
    }
  }
  cout << "Yes" << endl;
}