# 初期入力
import heapq
from itertools import combinations
import sys
input = sys.stdin.readline  #文字列では使わない
N,A,B,C = (int(i) for i in input().split())
l =[0]*N
for i in range(N):
    l[i] = int(input())

# A,B,Cと元の竹の長さの差（絶対値）
dif_A =[]
dif_B =[]
dif_C =[]
for n in range(1,N+1):
    for j in combinations(l,n):
        #dif変数の要素＝（求める長さー今回選んだ竹の長さ合計）*10**（合成魔法の回数)＝MPの消費量、
        #               選んだ竹、
        #               A or B or C(heapqするとABCが混ざるので区別に必要)
        #if n >=2:
        dif_A.append((abs(A-sum(j)) +10*(n-1),j,"A") )
        dif_B.append((abs(B-sum(j)) +10*(n-1),j,"B") )
        dif_C.append((abs(C-sum(j)) +10*(n-1),j,"C") )

#heapq でMPの小さいものから取り出す
mp=0 #マジックポイント
confirm =set() #作成したいものを入れる(A,B,C)
used =set() #使用が確定した竹(l)
dif =dif_A +dif_B +dif_C
heapq.heapify(dif)
for i in range(len(dif_A) +len(dif_B) +len(dif_C)):
    x =heapq.heappop( dif)
    #print(x)
    if x[2] not in confirm:
        if set(x[1]).isdisjoint(used):
            confirm.add(x[2])
            used |= set(x[1])
            mp +=x[0]
        if confirm =={"A","B","C"}:
            break
print(mp)