N, A, B, C = list(map(int, input().split()))

l = [int(eval(input())) for i in range(N)]

INF = 10 ** 9

def dfs(cur, a, b, c):

    if cur == N:

        return abs(a - A) + abs(b - B) + abs(c - C) - 30 if min(a, b, c) > 0 else INF

    ret0 = dfs(cur + 1, a, b, c)

    ret1 = dfs(cur + 1, a + l[cur], b, c) + 10

    ret2 = dfs(cur + 1, a, b + l[cur], c) + 10

    ret3 = dfs(cur + 1, a, b, c + l[cur]) + 10

    return min(ret0, ret1, ret2, ret3)

print((dfs(0, 0, 0, 0)))
N, A, B, C = list(map(int, input().split()))

l = [int(eval(input())) for _ in range(N)]

def dfs(cur, a, b, c):

    if cur == N:

        return abs(a-A) + abs(b-B) + abs(c-C) - 30 if a * b * c != 0 else 10 ** 9

    else:

        ret0 = dfs(cur + 1, a, b, c)

        reta = dfs(cur + 1, a + l[cur], b, c) + 10

        retb = dfs(cur + 1, a, b + l[cur], c) + 10

        retc = dfs(cur + 1, a, b, c + l[cur]) + 10

        return min(ret0, reta, retb, retc)

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


def dfs(cur, a, b, c):
    if cur == N:
        return abs(a - A) + abs(b - B) + abs(c - C) - 30 if min(a, b, c) > 0 else INF
    ret0 = dfs(cur + 1, a, b, c)
    ret1 = dfs(cur + 1, a + l[cur], b, c) + 10
    ret2 = dfs(cur + 1, a, b + l[cur], c) + 10
    ret3 = dfs(cur + 1, a, b, c + l[cur]) + 10
    return min(ret0, ret1, ret2, ret3)


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

N, A, B, C = list(map(int, input().split()))
l = [int(eval(input())) for _ in range(N)]


def dfs(cur, a, b, c):
    if cur == N:
        return abs(a - A) + abs(b - B) + abs(c - C) - 30 if a * b * c != 0 else 10**9
    else:
        ret0 = dfs(cur + 1, a, b, c)
        reta = dfs(cur + 1, a + l[cur], b, c) + 10
        retb = dfs(cur + 1, a, b + l[cur], c) + 10
        retc = dfs(cur + 1, a, b, c + l[cur]) + 10
        return min(ret0, reta, retb, retc)


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

-l = [int(eval(input())) for i in range(N)] -INF = 10**9 +l = [int(eval(input())) for _ in range(N)] -        return abs(a - A) + abs(b - B) + abs(c - C) - 30 if min(a, b, c) > 0 else INF -    ret0 = dfs(cur + 1, a, b, c) -    ret1 = dfs(cur + 1, a + l[cur], b, c) + 10 -    ret2 = dfs(cur + 1, a, b + l[cur], c) + 10 -    ret3 = dfs(cur + 1, a, b, c + l[cur]) + 10 -    return min(ret0, ret1, ret2, ret3) +        return abs(a - A) + abs(b - B) + abs(c - C) - 30 if a * b * c != 0 else 10**9 +    else: +        ret0 = dfs(cur + 1, a, b, c) +        reta = dfs(cur + 1, a + l[cur], b, c) + 10 +        retb = dfs(cur + 1, a, b + l[cur], c) + 10 +        retc = dfs(cur + 1, a, b, c + l[cur]) + 10 +        return min(ret0, reta, retb, retc)