// LUOGU_RID: 102220696
#include<bits/stdc++.h>
using namespace std;
int n,ans,x,a,b,c,p[4];
multiset<int> s;
int F(int x){
auto it=s.upper_bound(x);
if (it==s.begin()) return 0;
s.erase(--it); return 1;
}
int main(){
scanf("%d%d%d%d",&n,&p[1],&p[2],&p[3]);
sort(p+1,p+4),a=p[1],b=p[2],c=p[3];
for (int i=1; i<=n; i++){
scanf("%d",&x); s.insert(x);
if (x>a+b+c) return puts("-1"),0;
}
while (!s.empty()){
int mx=*s.rbegin(); ans++;
s.erase(s.find(mx));
if (mx<=c){
if (F(b)) F(a);
else F(a+b);
} else if (mx<=a+b) F(c);
else if (mx<=a+c) F(b);
else if (mx<=b+c) F(a);
}
printf("%d\n",ans);
}