n,A,B,C=map(int,input().split())
bam=[]
for i in range(n):
    bam.append(int(input()))
INF = 10 ** 9

def dfs(cur, a, b, c):
    if cur == n: #curは０スタートだから、cur=nのときにはｎ本の竹の使い道が決まっている。
        print(str(cur)+" "+str(a)+" "+str(b)+" "+str(c))
        return abs(a - A) + abs(b - B) + abs(c - C) - 30 if min(a, b, c) > 0 else INF 
        #-30する理由は、２本の竹を使うときに20mpで合体してる。本当は、10mpでいいのに。
        #min(a, b, c) > 0 この条件は、A,B,Cどれにも最低一本は木を使わないといけないから
    ret0 = dfs(cur + 1, a, b, c)
    ret1 = dfs(cur + 1, a + bam[cur], b, c) + 10 #Aにcur番目の竹を使う　使うときに10mp使っておく。
    ret2 = dfs(cur + 1, a, b + bam[cur], c) + 10
    ret3 = dfs(cur + 1, a, b, c + bam[cur]) + 10
    print(min(ret0, ret1, ret2, ret3))
    return min(ret0, ret1, ret2, ret3)

print(dfs(0, 0, 0, 0))