N, A, B, C = map(int,input().split())
l = [int(input()) for i in range(N)]
INF = 10 ** 9

def dfs(cnt,a,b,c):
    if cnt == N:
        return abs(a-A) + abs(b-B) + abs(c-C) - 30 if min(a,b,c) > 0 else INF
        #最初は0から始めていて不要な処理が一回あるため-30する。
    res0 = dfs(cnt + 1,a,b,c)
    res1 = dfs(cnt + 1,a + l[cnt],b,c) + 10
    res2 = dfs(cnt + 1,a,b + l[cnt],c) + 10
    res3 = dfs(cnt + 1,a,b,c + l[cnt]) + 10
    return min(res0,res1,res2,res3)

print(dfs(0,0,0,0)) N, A, B, C = map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split A B C int(input()) for i in range(N) for i in range(N) i range(N) range N for i in range(N) int(input()) int input() input l = [int(input()) for i in range(N)] l [int(input()) for i in range(N)] INF = 10 ** 9 INF 10 ** 9 10 9 def dfs(cnt,a,b,c):
    if cnt == N:
        return abs(a-A) + abs(b-B) + abs(c-C) - 30 if min(a,b,c) > 0 else INF
        #最初は0から始めていて不要な処理が一回あるため-30する。
    res0 = dfs(cnt + 1,a,b,c)
    res1 = dfs(cnt + 1,a + l[cnt],b,c) + 10
    res2 = dfs(cnt + 1,a,b + l[cnt],c) + 10
    res3 = dfs(cnt + 1,a,b,c + l[cnt]) + 10
    return min(res0,res1,res2,res3) dfs if cnt == N:
        return abs(a-A) + abs(b-B) + abs(c-C) - 30 if min(a,b,c) > 0 else INF
        #最初は0から始めていて不要な処理が一回あるため-30する。
     cnt == N cnt N return abs(a-A) + abs(b-B) + abs(c-C) - 30 if min(a,b,c) > 0 else INF abs(a-A) + abs(b-B) + abs(c-C) - 30 if min(a,b,c) > 0 else INF min(a,b,c) > 0 min(a,b,c) min a b c 0 abs(a-A) + abs(b-B) + abs(c-C) - 30 abs(a-A) + abs(b-B) + abs(c-C) abs(a-A) + abs(b-B) abs(a-A) abs a-A a A abs(b-B) abs b-B b B abs(c-C) abs c-C c C 30 INF res0 = dfs(cnt + 1,a,b,c) res0 dfs(cnt + 1,a,b,c) dfs cnt + 1 cnt 1 a b c res1 = dfs(cnt + 1,a + l[cnt],b,c) + 10 res1 dfs(cnt + 1,a + l[cnt],b,c) + 10 dfs(cnt + 1,a + l[cnt],b,c) dfs cnt + 1 cnt 1 a + l[cnt] a l[cnt] l cnt b c 10 res2 = dfs(cnt + 1,a,b + l[cnt],c) + 10 res2 dfs(cnt + 1,a,b + l[cnt],c) + 10 dfs(cnt + 1,a,b + l[cnt],c) dfs cnt + 1 cnt 1 a b + l[cnt] b l[cnt] l cnt c 10 res3 = dfs(cnt + 1,a,b,c + l[cnt]) + 10 res3 dfs(cnt + 1,a,b,c + l[cnt]) + 10 dfs(cnt + 1,a,b,c + l[cnt]) dfs cnt + 1 cnt 1 a b c + l[cnt] c l[cnt] l cnt 10 return min(res0,res1,res2,res3) min(res0,res1,res2,res3) min res0 res1 res2 res3 cnt cnt a a b b c c print(dfs(0,0,0,0)) print dfs(0,0,0,0) dfs 0 0 0 0 l = [int(input()) for i in range(N)] [int(input()) for i in range(N)] l A, B, C = map(int,input().split()) map(int,input().split()) A N, A, B, C = map(int,input().split()) map(int,input().split()) N C = map(int,input().split()) map(int,input().split()) C INF = 10 ** 9 10 ** 9 INF B, C = map(int,input().split()) map(int,input().split()) B def dfs(cnt,a,b,c):
    if cnt == N:
        return abs(a-A) + abs(b-B) + abs(c-C) - 30 if min(a,b,c) > 0 else INF
        #最初は0から始めていて不要な処理が一回あるため-30する。
    res0 = dfs(cnt + 1,a,b,c)
    res1 = dfs(cnt + 1,a + l[cnt],b,c) + 10
    res2 = dfs(cnt + 1,a,b + l[cnt],c) + 10
    res3 = dfs(cnt + 1,a,b,c + l[cnt]) + 10
    return min(res0,res1,res2,res3) def dfs(cnt,a,b,c):
    if cnt == N:
        return abs(a-A) + abs(b-B) + abs(c-C) - 30 if min(a,b,c) > 0 else INF
        #最初は0から始めていて不要な処理が一回あるため-30する。
    res0 = dfs(cnt + 1,a,b,c)
    res1 = dfs(cnt + 1,a + l[cnt],b,c) + 10
    res2 = dfs(cnt + 1,a,b + l[cnt],c) + 10
    res3 = dfs(cnt + 1,a,b,c + l[cnt]) + 10
    return min(res0,res1,res2,res3) dfs
N, A, B, C = map(int,input().split())
l = [int(input()) for i in range(N)]
INF = 10 ** 9

def dfs(cnt,a,b,c):
    if cnt == N:
        return abs(a-A) + abs(b-B) + abs(c-C) - 30 if min(a,b,c) > 0 else INF
        #最初は0から始めていて不要な処理が一回あるため-30する。
    res0 = dfs(cnt + 1,a,b,c)
    res1 = dfs(cnt + 1,a + l[cnt],b,c) + 10
    res2 = dfs(cnt + 1,a,b + l[cnt],c) + 10
    res3 = dfs(cnt + 1,a,b,c + l[cnt]) + 10
    return min(res0,res1,res2,res3)

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