#include <bits/stdc++.h>
using namespace std;
const int N = 5010;
const int M = 1000000007;
int a, b, c, n;
multiset<int> s;
bool beat(int v) {
  if (s.empty()) return true;
  multiset<int>::iterator it = s.end();
  it--;
  if (v >= *it) {
    s.erase(it);
    return true;
  }
  return false;
}
bool beat2(int v) {
  if (s.empty()) return true;
  if (v < *s.begin()) return false;
  multiset<int>::iterator it = s.upper_bound(v);
  it--;
  s.erase(it);
  return true;
}
int main() {
  ios::sync_with_stdio(0);
  cin >> n;
  cin >> a >> b >> c;
  if (a > b) swap(a, b);
  if (a > c) swap(a, c);
  if (b > c) swap(b, c);
  for (int i = 1, x; i <= n; ++i) {
    cin >> x;
    s.insert(x);
    if (x > a + b + c) {
      cout << "-1\n";
      return 0;
    }
  }
  int co = 0;
  while (!s.empty()) {
    ++co;
    if (beat(a)) {
      beat(b);
      beat(c);
    } else if (beat(b)) {
      beat2(a);
      beat(c);
    } else if (beat(c)) {
      if (beat2(a))
        beat2(b);
      else
        beat2(a + b);
    } else if (beat(a + b)) {
      beat2(c);
    } else if (beat(a + c)) {
      beat2(b);
    } else if (beat(b + c)) {
      beat2(a);
    } else
      beat(a + b + c);
  }
  cout << co << '\n';
}
