#include <bits/stdc++.h>
using namespace std;
const int tam = 10000010;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, su[3];
  cin >> n;
  for (int i = 0; i < 3; i++) cin >> su[i];
  int ar[n];
  for (int i = 0; i < n; i++) cin >> ar[i];
  int ord[] = {0, 1, 2};
  int res = 1000000007;
  do {
    int cos1 = 1000000007, ind1;
    for (int i = 1; i < 1 << n; i++) {
      if (__builtin_popcount(i) < n - 2) {
        int parcos = (__builtin_popcount(i) - 1) * 10, parsu = 0;
        for (int j = 0; j < n; j++) {
          parsu += (((1 << j) & i) ? 1 : 0) * ar[j];
        }
        parcos += abs(parsu - su[ord[0]]);
        if (parcos < cos1) {
          cos1 = parcos;
          ind1 = i;
        }
      }
    }
    vector<int> segu;
    int cos2 = 1000000007, ind2;
    for (int i = 0; i < n; i++) {
      if (!((1 << i) & ind1)) segu.push_back(ar[i]);
    }
    int ta = segu.size();
    for (int i = 1; i < 1 << ta; i++) {
      if (__builtin_popcount(i) < ta - 1) {
        int parcos = (__builtin_popcount(i) - 1) * 10, parsu = 0;
        for (int j = 0; j < ta; j++) {
          parsu += (((1 << j) & i) ? 1 : 0) * segu[j];
        }
        parcos += abs(parsu - su[ord[1]]);
        if (parcos < cos2) {
          cos2 = parcos;
          ind2 = i;
        }
      }
    }
    vector<int> ter;
    int cos3 = 1000000007, ind3;
    for (int i = 0; i < ta; i++) {
      if (!((1 << i) & ind2)) ter.push_back(segu[i]);
    }
    ta = ter.size();
    for (int i = 1; i < 1 << ta; i++) {
      int parcos = (__builtin_popcount(i) - 1) * 10, parsu = 0;
      for (int j = 0; j < ta; j++) {
        parsu += (((1 << j) & i) ? 1 : 0) * ter[j];
      }
      parcos += abs(parsu - su[ord[2]]);
      if (parcos < cos3) {
        cos3 = parcos;
        ind3 = i;
      }
    }
    res = min(res, cos1 + cos2 + cos3);
  } while (next_permutation(ord, ord + 3));
  cout << res << '\n';
  return 0;
}
