// Original C++ solution (slower):
#include <bits/stdc++.h>

using namespace std;



   typedef long long ll;

   typedef pair<ll, ll> Pii;

   typedef vector<ll> Vi;

   typedef vector<Vi> VVi;



   const double EPS = (1e-7);

   const ll INF =(1e13);

   const double PI = (acos(-1));

   const ll MOD = ll(1e9) + 7;



   #define REP(i, n) for(ll i = 0; i < (ll)(n); i++)

   #define REPR(i, n) for(ll i = n; i > -1; i--)

   #define FOR(i, a, b) for (ll i = (ll)(a); i < (ll)(b); i++)

   #define ALL(x) (x).begin(),(x).end()

   #define SORT(x) sort((x).begin(), (x).end())

   #define RSORT(x) sort((x).rbegin(), (x).rend())

   #define REVERSE(x) reverse((x).begin(), (x).end())

   #define SZ(x) ((ll)(x).size())

   #define pb push_back

   #define mp make_pair



   //chmax(a, b): a>bならaをbで更新　更新したときにtrueを返す

   //chmin(a, b): a<bならaをbで更新　更新したときにtrueを返す

   template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }

   template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }



   #define dump(x) cerr<< #x << "= " << (x) << endl;



   ll gcd(ll a, ll b){return b?gcd(b,a%b):a;}

   ll pow(ll a, ll b){if (b == 0) return 1; else if (b % 2 == 0) return pow(a * a, b / 2); else return pow(a * a, b / 2) * a;}

   ll pow(ll a, ll b, ll m){if (b == 0) return 1; else if (a == 0) return 0; else if (b % 2 == 0) return (pow((a * a) % m, b / 2, m) % m); else return (pow((a * a) % m, b / 2, m) * a) % m;}

   ll residue(ll a, ll m){return ((a % m) + m) % m;};



   ll dx[4]={1,0,-1,0};

   ll dy[4]={0,1,0,-1};



ll n;

ll a[3];

ll L[8];

int main(){

   cin >> n;

   cin >> a[0] >> a[1] >> a[2];

   REP(i, n) cin >> L[i];



   ll ans = INF;

   REP(i, pow(4, n)){

      ll cost = 0;

      ll x[4] = {};

      REP(j, n){

         ll type = (i / pow(4ll, j)) % 4ll;

         x[type] += L[j];

         if(type) cost += 10;

      }

      REP(k, 3){

         cost += ((x[k+1] == 0) ? INF : abs(x[k+1] - a[k]));

      }

      cost -= 30;

      chmin(ans, cost);

   }

   cout << ans << endl;

}


// Optimized solution to the same problem (faster):
#include <bits/stdc++.h>

using namespace std;



   typedef long long ll;

   typedef pair<ll, ll> Pii;

   typedef vector<ll> Vi;

   typedef vector<Vi> VVi;



   const double EPS = (1e-7);

   const ll INF =(1e13);

   const double PI = (acos(-1));

   const ll MOD = ll(1e9) + 7;



   #define REP(i, n) for(ll i = 0; i < (ll)(n); i++)

   #define REPR(i, n) for(ll i = n; i > -1; i--)

   #define FOR(i, a, b) for (ll i = (ll)(a); i < (ll)(b); i++)

   #define ALL(x) (x).begin(),(x).end()

   #define SORT(x) sort((x).begin(), (x).end())

   #define RSORT(x) sort((x).rbegin(), (x).rend())

   #define REVERSE(x) reverse((x).begin(), (x).end())

   #define SZ(x) ((ll)(x).size())

   #define pb push_back

   #define mp make_pair



   //chmax(a, b): a>bならaをbで更新　更新したときにtrueを返す

   //chmin(a, b): a<bならaをbで更新　更新したときにtrueを返す

   template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }

   template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }



   #define dump(x) cerr<< #x << "= " << (x) << endl;



   ll gcd(ll a, ll b){return b?gcd(b,a%b):a;}

   ll pow(ll a, ll b){if (b == 0) return 1; else if (b % 2 == 0) return pow(a * a, b / 2); else return pow(a * a, b / 2) * a;}

   ll pow(ll a, ll b, ll m){if (b == 0) return 1; else if (a == 0) return 0; else if (b % 2 == 0) return (pow((a * a) % m, b / 2, m) % m); else return (pow((a * a) % m, b / 2, m) * a) % m;}

   ll residue(ll a, ll m){return ((a % m) + m) % m;};



   ll dx[4]={1,0,-1,0};

   ll dy[4]={0,1,0,-1};

ll N, A, B, C;

Vi L;



ll dfs(ll cur, ll a, ll b, ll c){

   if(cur == N){

      return (min({a, b, c}) > 0ll) ? abs(a - A) + abs(b - B) + abs(c - C) - 30 : INF;

   }

   else{

      ll ret0 = dfs(cur + 1, a, b, c);

      ll ret1 = dfs(cur + 1, a + L[cur], b, c) + 10;

      ll ret2 = dfs(cur + 1, a, b + L[cur], c) + 10;

      ll ret3 = dfs(cur + 1, a, b, c + L[cur]) + 10;

      return min({ret0, ret1, ret2, ret3});

   }

}



int main(){

   cin >> N >> A >> B >> C;

   REP(i, N){

      ll li ; cin >> li;

      L.pb(li);

   }

   cout << dfs(0, 0, 0, 0) << endl;

}


// Fastest known solution for this problem: