#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using ll = unsigned long long;
using namespace std;

// http://drken1215.hatenablog.com/entry/2019/02/24/224100
// https://qiita.com/nomikura/items/4e66f708895fb7db76d1

void chmin(int &a, int b) {
    // b のが小さければ，aを入れ替える
     if (a > b) {
         a = b;
     } 
}


// solve
int rec(int i, int a, int b, int c, const int n, const int ca, const int cb, const int cc, int* l) {
    if(i == n) {
        if(!a || !b || !c) {
            // 1本も使ってない
            return INFINITY;
        }
        // 合体後の差分
        return abs(a-ca) + abs(b-cb) + abs(c-cc);
    }

    // 選ばないことにした場合のコスト
    int res = rec(i+1,a,b,c,n,ca,cb,cc,l);
    // Aにマージした際のコスト
    chmin(res, rec(i+1, a+l[i], b,c,n,ca,cb,cc,l)+(a?10:0));
    // Bにマージした際のコスト
    chmin(res, rec(i+1, a, b+l[i],c,n,ca,cb,cc,l)+(b?10:0));
    // Cにマージした際のコスト
    chmin(res, rec(i+1, a, b,c+l[i],n,ca,cb,cc,l)+(c?10:0));
    // 1本目はコスト増加なし

    // それぞれを選んだ場合のコストの小さい値にresを入れ替える
    // 深さ優先探索の結果，最小のresがドンドン上に伝搬する
    // 最終的には，全ノードを考慮した探索が行える

    return res;

}


int main(void) {

    int n, a, b, c;
    cin >> n >> a >> b >> c;
    int *l = new int[n];

    for(int i =0; i < n; ++i) {
        cin >> l[i];
    }

    cout << rec(0,0,0,0,n,a,b,c,l) << endl;

    return 0;
}