#include<iostream>
#include<algorithm>
using namespace std;
#define REP(i,b,n) for(int i=b;i<n;i++)
#define rep(i,n)   REP(i,0,n)
typedef long long ll;
const int M = 40011;
bool dp[2][M];
bool solve(int n,ll *in,int m,int L,int R){
  int now=0;
  int allm=4*m+1;
  rep(i,M)dp[0][i]=dp[1][i]=false;
  dp[0][2*m]=true;

  rep(i,n){
    int next=(now+1)%2;
    rep(j,allm){
      if (!dp[now][j])continue;

      if ( j-R*in[i]*2 >= 0){
	//cout << j <<" " << j-L*in[i] << " " << j-R*in[i]*2 << endl;
	dp[next][max(0LL,  j-L*in[i])]=true;//j+(-L/2*mi+m)*2;
	dp[next][        j-R*in[i]*2]=true;//j+(-R*mi  +m)*2;
      }

      if (j+R*in[i]*2 <= 4*m){
	//cout << j <<" " << j+L*in[i] << " " << j+R*in[i]*2 << endl;
	dp[next][min(4LL*m,j+L*in[i])]=true;//j+(L/2*mi+m)*2;
	dp[next][        j+R*in[i]*2]=true;//j+(R*mi  +m)*2;
      }
    }
    //rep(j,allm)cout << dp[next][j]<<" ";cout << endl;
    rep(j,allm)dp[now][j]=false;
    now=next;
  }
  
  rep(i,allm){
    if (dp[now][i])return true;
  }
  return false;
}

const int N = 100;
ll in[N];
int main(){
  int n,l,m,r;
  while(cin>>n>>l>>m>>r){
    rep(i,n)cin>>in[i];
    cout << (solve(n,in,m,l,r)?"Yes":"No") << endl;
  }
  return false;
}