function BambooGrow(tg,bb){

  //console.log("今回のtg=",tg);
  //console.log("今回のbb=",bb);
  
  //長さが一致する竹を対象一覧(配列tg、bb)から排除する
  for(var i=0 ; i<tg.length ; i++){
    var tmp = bb.indexOf(tg[i]);
    if(tmp>0){ 
      tg.splice(i,1);
      bb.splice(tmp,1);
    }
  }

  //console.log("排除tg=",tg);
  //console.log("排除bb=",bb);
  
  //以下が竹の成長パターン確定処理(以下の処理は常にtgの先頭から喰っていく)
  var bbp = [0,0];

  var LMP = 0;
  while( tg.length > 0 ){
  
    //最も近似する場所を求める
    var t1 = Number.MAX_VALUE;
    for( var j=0 ; j<bb.length ; j++){
      var t2 = Math.abs(tg[0]-bb[j]);
      if( t1 > t2 ){
        t1 = t2;
        bbp[0] = j;
      }
    }
    
    //2本の竹を足して再度考えてみる
    if(t1>10){
      //console.log("結合の可能性調査");
      var c_flg = false;
      for(var k=0 ; k<bb.length-1 ; k++){
        for(var r=k+1 ; r<bb.length ; r++){
          t2 = Math.abs(tg[0]-(bb[k]+bb[r]));
          if( t1 > t2 ){
            t1 = t2;
            bbp[0] = k;
            bbp[1] = r;
            c_flg = true;
          }
        }
      }
    }

    //絶対値との差異(t1)をMPとして足しこみ、bbから要素を削除する
    if(c_flg === true){
      //竹を結合する
      LMP += 10;
      
      //console.log("追加前bb=",bb);
      
      //最後に追加
      bb.push(bb[bbp[0]]+bb[bbp[1]]);

      //console.log("追加後bb=",bb);

      //追加した元ねたの削除
      bb.splice(bbp[1],1);
      bb.splice(bbp[0],1);
      
      //console.log("削除後bb=",bb);
      //
      c_flg = false;
    } else {
      LMP += t1;
      tg.splice(0,1);
      bb.splice(bbp[0],1);
    }
    //console.log("処理後tg=",tg);
    //console.log("処理後bb=",bb);
  }
  //console.log("今回のMP=",LMP);
  return LMP;
}
function Main(input){
  input = input.split("\n");
  inputStr = input[0].split(" ");
  const N = Number.parseInt(inputStr[0]);
  const A = Number.parseInt(inputStr[1]);
  const B = Number.parseInt(inputStr[2]);
  const C = Number.parseInt(inputStr[3]);

  //N本の竹の長さを配列bbに格納する
  var bb = [];
  for( var i=0 ; i<N ; i++ ){
    bb.push(Number.parseInt(input[i+1].split(" ")));
  }

  //どの竹から成長させるかで結果が異なるため、此方で全パターンを指示
  var MP = Number.MAX_VALUE;
  for(var j=0 ; j<6 ; j++){
  
    if(j===0){ var tg = [A,B,C]; }
    if(j===1){ var tg = [A,C,B]; }
    if(j===2){ var tg = [B,A,C]; }
    if(j===3){ var tg = [B,C,A]; }
    if(j===4){ var tg = [C,A,B]; }
    if(j===5){ var tg = [C,B,A]; }
    
    //console.log(j,"回目のtg=",tg);
    var tmp_bb = bb.slice();
    MP = Math.min(MP,BambooGrow(tg,tmp_bb));
  }
  console.log(MP);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
