#include using namespace std; // #define int long long #define rep(i, n) for (int i = (int)(0); i < (int)(n); ++i) #define reps(i, n) for (int i = (int)(1); i <= (int)(n); ++i) #define rrep(i, n) for (int i = ((int)(n)-1); i >= 0; i--) #define rreps(i, n) for (int i = ((int)(n)); i > 0; i--) #define irep(i, m, n) for (int i = (int)(m); i < (int)(n); ++i) #define ireps(i, m, n) for (int i = (int)(m); i <= (int)(n); ++i) #define SORT(v, n) sort(v, v + n); #define REVERSE(v, n) reverse(v, v+n); #define vsort(v) sort(v.begin(), v.end()); #define all(v) v.begin(), v.end() #define mp(n, m) make_pair(n, m); #define cout(d) cout<; using vvi = vector; using vll = vector; using vvll = vector; using pii = pair; using pll = pair; using vs = vector; using vpll = vector>; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } const ll INF = 1e15; const int MOD = 1e9+7; const ll LINF = 1e18; signed main() { cin.tie( 0 ); ios::sync_with_stdio( false ); ll n,x,y,z; cin>>n>>x>>y>>z; priority_queue q; rep(i,n){ ll a; cin>>a; q.push(a); } while(z>0 && !q.empty()){ ll now=q.top(); q.pop(); if(now>=10000){ ll cnt=min(now/10000,z); q.push(now-10000*cnt); z-=cnt; }else{ now-=10000; z--; } } while(y>0 && !q.empty()){ ll now=q.top(); q.pop(); if(now>=5000){ ll cnt=min(now/5000,y); q.push(now-5000*cnt); y-=cnt; }else{ now-=5000; y--; } } while(x>0 && !q.empty()){ ll now=q.top(); q.pop(); if(now>=1000){ ll cnt=min(now/1000,x); q.push(now-1000*cnt); x-=cnt; }else{ now-=1000; x--; } } if(q.empty()) cout<<"Yes"<