//グローバル変数定義
var N = 0;
var A = 0;
var B = 0;
var C = 0;
var T = [];	//N本の竹の長さを配列BBに格納する

function FullSearch(){
  const BA = 1;
  const BB = 2;
  const BC = 3;
  
  //回答格納用。初期値はinfとする。
  var LastMP = Infinity;
  
  for(var i=0 ; i<Math.pow(2,N*2) ; i++ ){
    var ans0 = 0; //何にも使わない
    var ansA = 0; //A用回答
    var cntA = 0; //A用カウンタ
    var ansB = 0; //B用回答
    var cntB = 0; //B用カウンタ
    var ansC = 0; //C用回答
    var cntC = 0; //C用カウンタ
    
    for(var j=0 ; j<N ; j++){
      //BIT積による判定処理
      switch (i & (BC<<(j*2))){
        case BA<<(j*2):
          ansA += T[j];
          cntA++;
          break;
        case BB<<(j*2):
          ansB += T[j];
          cntB++;
          break;
        case BC<<(j*2):
          ansC += T[j];
          cntC++;
          break;
        default:
          ans0 += T[j];
          break;
      }
    }
    
    //A～Cのどれにも竹が割りあたっていない場合はスキップ
    if(cntA*cntB*cntC > 0){
      //使用MP計算処理
      var MP = 0;
      //A用
      MP += Math.abs(ansA-A);
      MP += 10 * ( cntA -1 );
      //B用
      MP += Math.abs(ansB-B);
      MP += 10 * ( cntB -1 );
      //C用
      MP += Math.abs(ansC-C);
      MP += 10 * ( cntC -1 );
      //MPの記録
      if( LastMP > MP ){
        LastMP = MP;
      }
    }
  }
  return LastMP;
}
function Main(input){
  input = input.split("\n");
  inputStr = input[0].split(" ");
  N = Number.parseInt(inputStr[0]);
  A = Number.parseInt(inputStr[1]);
  B = Number.parseInt(inputStr[2]);
  C = Number.parseInt(inputStr[3]);
  //N本の竹の長さを配列BBに格納する
  for( var i=0 ; i<N ; i++ ){
    T.push(Number.parseInt(input[i+1].split(" ")));
  }
  //Bit全探索で探索処理を組む
  console.log(FullSearch());
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));