#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
int n, a[7], cnt[7], t[N];
void GetData() {
  int i;
  scanf("%d", &n);
  for (i = 0; i < 3; ++i) scanf("%d", &a[i]);
  for (i = 0; i < n; ++i) scanf("%d", &t[i]);
}
void Solve() {
  int i, j, ans, mn;
  bool flag = false;
  sort(a, a + 3);
  sort(t, t + n);
  a[3] = a[0] + a[1];
  a[4] = a[0] + a[2];
  a[5] = a[1] + a[2];
  a[6] = a[3] + a[2];
  if (t[n - 1] > a[6])
    ans = -1, mn = 0;
  else {
    if (a[2] > a[3]) {
      swap(a[2], a[3]);
      flag = true;
    }
    memset(cnt, 0, sizeof(cnt));
    for (i = 0; i < n; ++i) {
      for (j = 0; j < 7; ++j) {
        if (a[j] >= t[i]) {
          cnt[j]++;
          break;
        }
      }
    }
    ans = cnt[6];
    for (; cnt[5] > 0; ++ans) {
      cnt[5]--;
      if (cnt[0] > 0) cnt[0]--;
    }
    for (; cnt[4] > 0; ++ans) {
      cnt[4]--;
      if (cnt[1] > 0)
        cnt[1]--;
      else if (cnt[0] > 0)
        cnt[0]--;
    }
    if (flag) {
      for (; cnt[3] > 0; ++ans) {
        cnt[3]--;
        if (cnt[0] > 0 && cnt[1] > 0) {
          cnt[0]--;
          cnt[1]--;
        } else if (cnt[0] > 0) {
          if (cnt[0] > 1)
            cnt[0] -= 2;
          else if (cnt[2] > 0)
            cnt[2]--;
          else
            cnt[0]--;
        } else if (cnt[1] > 0) {
          if (cnt[2] > 0)
            cnt[2]--;
          else
            cnt[1]--;
        } else if (cnt[2] > 0)
          cnt[2]--;
      }
    } else {
      for (; cnt[3] > 0; ++ans) {
        cnt[3]--;
        if (cnt[2] > 0)
          cnt[2]--;
        else if (cnt[1] > 0)
          cnt[1]--;
        else if (cnt[0] > 0)
          cnt[0]--;
      }
    }
    mn = n;
    for (i = 0; i <= cnt[2]; ++i) {
      int a, b, c, tmp = i;
      a = cnt[0];
      b = cnt[1];
      c = cnt[2];
      c -= i;
      if (c >= i)
        c -= i;
      else if (b >= i - c)
        b -= i - c, c = 0;
      else {
        if (a >= i - c - b)
          a -= i - c - b;
        else
          a = 0;
        b = c = 0;
      }
      if (c > 0) {
        if (b < c)
          a = max(0, a - c - c + b);
        else
          a = max(0, a - c);
        b = max(0, b - c);
        tmp += c;
      }
      if (b >= a * 2)
        tmp += (b + 1) / 2;
      else
        tmp += (a + b + 2) / 3;
      mn = min(mn, tmp);
    }
  }
  printf("%d\n", ans + mn);
}
int main() {
  GetData();
  Solve();
  return 0;
}
