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

def dfs(i, a, b, c):
    if i == N:
        if a > 0 and b > 0 and c > 0:
            # 最初の一本目の合体において +10 の必要がないのに足しているので、それぞれについて -10 してあげる
            return abs(a - A) + abs(b - B) + abs(c - C) - 30
        else:
            return INF

    res0 = dfs(i + 1, a, b, c)
    res1 = dfs(i + 1, a + l[i], b, c) + 10
    res2 = dfs(i + 1, a, b + l[i], c) + 10
    res3 = dfs(i + 1, a, b, c + l[i]) + 10
    
    return min(res0, res1, res2, res3)

res = dfs(0, 0, 0, 0)
print(res) 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 _ in range(N) for _ in range(N) _ range(N) range N for _ in range(N) int(input()) int input() input l = [int(input()) for _ in range(N)] l [int(input()) for _ in range(N)] INF = 10 ** 9 INF 10 ** 9 10 9 def dfs(i, a, b, c):
    if i == N:
        if a > 0 and b > 0 and c > 0:
            # 最初の一本目の合体において +10 の必要がないのに足しているので、それぞれについて -10 してあげる
            return abs(a - A) + abs(b - B) + abs(c - C) - 30
        else:
            return INF

    res0 = dfs(i + 1, a, b, c)
    res1 = dfs(i + 1, a + l[i], b, c) + 10
    res2 = dfs(i + 1, a, b + l[i], c) + 10
    res3 = dfs(i + 1, a, b, c + l[i]) + 10
    
    return min(res0, res1, res2, res3) dfs if i == N:
        if a > 0 and b > 0 and c > 0:
            # 最初の一本目の合体において +10 の必要がないのに足しているので、それぞれについて -10 してあげる
            return abs(a - A) + abs(b - B) + abs(c - C) - 30
        else:
            return INF

     i == N i N if a > 0 and b > 0 and c > 0:
            # 最初の一本目の合体において +10 の必要がないのに足しているので、それぞれについて -10 してあげる
            return abs(a - A) + abs(b - B) + abs(c - C) - 30
        else:
            return INF

     a > 0 and b > 0 and c > 0 a > 0 and b > 0 a > 0 a 0 b > 0 b 0 c > 0 c 0 return abs(a - A) + abs(b - B) + abs(c - C) - 30 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 return INF INF res0 = dfs(i + 1, a, b, c) res0 dfs(i + 1, a, b, c) dfs i + 1 i 1 a b c res1 = dfs(i + 1, a + l[i], b, c) + 10 res1 dfs(i + 1, a + l[i], b, c) + 10 dfs(i + 1, a + l[i], b, c) dfs i + 1 i 1 a + l[i] a l[i] l i b c 10 res2 = dfs(i + 1, a, b + l[i], c) + 10 res2 dfs(i + 1, a, b + l[i], c) + 10 dfs(i + 1, a, b + l[i], c) dfs i + 1 i 1 a b + l[i] b l[i] l i c 10 res3 = dfs(i + 1, a, b, c + l[i]) + 10 res3 dfs(i + 1, a, b, c + l[i]) + 10 dfs(i + 1, a, b, c + l[i]) dfs i + 1 i 1 a b c + l[i] c l[i] l i 10 return min(res0, res1, res2, res3) min(res0, res1, res2, res3) min res0 res1 res2 res3 i i a a b b c c res = dfs(0, 0, 0, 0) res dfs(0, 0, 0, 0) dfs 0 0 0 0 print(res) print res A, B, C = map(int, input().split()) map(int, input().split()) A C = map(int, input().split()) map(int, input().split()) C B, C = map(int, input().split()) map(int, input().split()) B l = [int(input()) for _ in range(N)] [int(input()) for _ in range(N)] l def dfs(i, a, b, c):
    if i == N:
        if a > 0 and b > 0 and c > 0:
            # 最初の一本目の合体において +10 の必要がないのに足しているので、それぞれについて -10 してあげる
            return abs(a - A) + abs(b - B) + abs(c - C) - 30
        else:
            return INF

    res0 = dfs(i + 1, a, b, c)
    res1 = dfs(i + 1, a + l[i], b, c) + 10
    res2 = dfs(i + 1, a, b + l[i], c) + 10
    res3 = dfs(i + 1, a, b, c + l[i]) + 10
    
    return min(res0, res1, res2, res3) def dfs(i, a, b, c):
    if i == N:
        if a > 0 and b > 0 and c > 0:
            # 最初の一本目の合体において +10 の必要がないのに足しているので、それぞれについて -10 してあげる
            return abs(a - A) + abs(b - B) + abs(c - C) - 30
        else:
            return INF

    res0 = dfs(i + 1, a, b, c)
    res1 = dfs(i + 1, a + l[i], b, c) + 10
    res2 = dfs(i + 1, a, b + l[i], c) + 10
    res3 = dfs(i + 1, a, b, c + l[i]) + 10
    
    return min(res0, res1, res2, res3) dfs res = dfs(0, 0, 0, 0) dfs(0, 0, 0, 0) res INF = 10 ** 9 10 ** 9 INF N, A, B, C = map(int, input().split()) map(int, input().split()) N
N, A, B, C = map(int, input().split())
l = [int(input()) for _ in range(N)]
INF = 10 ** 9

def dfs(i, a, b, c):
    if i == N:
        if a > 0 and b > 0 and c > 0:
            # 最初の一本目の合体において +10 の必要がないのに足しているので、それぞれについて -10 してあげる
            return abs(a - A) + abs(b - B) + abs(c - C) - 30
        else:
            return INF

    res0 = dfs(i + 1, a, b, c)
    res1 = dfs(i + 1, a + l[i], b, c) + 10
    res2 = dfs(i + 1, a, b + l[i], c) + 10
    res3 = dfs(i + 1, a, b, c + l[i]) + 10
    
    return min(res0, res1, res2, res3)

res = dfs(0, 0, 0, 0)
print(res)