
def solve():

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

    def dfs(cursol, a, b, c):
        # すべての竹に対して合成魔法を試したら、不足分は延長 or 短縮魔法を使う
        if cursol == N:
            return abs(A-a)+abs(B-b)+abs(C-c)-30 if min(a, b, c) > 0 else inf

        return min(
            dfs(cursol+1, a, b, c),
            # 合成魔法を使っているので+10が必要
            dfs(cursol+1, a+llist[cursol], b, c)+10,
            dfs(cursol+1, a, b+llist[cursol], c)+10,
            dfs(cursol+1, a, b, c+llist[cursol])+10
        )

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


if __name__ == "__main__":
    solve() def solve():

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

    def dfs(cursol, a, b, c):
        # すべての竹に対して合成魔法を試したら、不足分は延長 or 短縮魔法を使う
        if cursol == N:
            return abs(A-a)+abs(B-b)+abs(C-c)-30 if min(a, b, c) > 0 else inf

        return min(
            dfs(cursol+1, a, b, c),
            # 合成魔法を使っているので+10が必要
            dfs(cursol+1, a+llist[cursol], b, c)+10,
            dfs(cursol+1, a, b+llist[cursol], c)+10,
            dfs(cursol+1, a, b, c+llist[cursol])+10
        )

    print(dfs(0, 0, 0, 0)) solve 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 llist = [int(input()) for i in range(N)] llist [int(input()) for i in range(N)] inf = 10**9 inf 10**9 10 9 def dfs(cursol, a, b, c):
        # すべての竹に対して合成魔法を試したら、不足分は延長 or 短縮魔法を使う
        if cursol == N:
            return abs(A-a)+abs(B-b)+abs(C-c)-30 if min(a, b, c) > 0 else inf

        return min(
            dfs(cursol+1, a, b, c),
            # 合成魔法を使っているので+10が必要
            dfs(cursol+1, a+llist[cursol], b, c)+10,
            dfs(cursol+1, a, b+llist[cursol], c)+10,
            dfs(cursol+1, a, b, c+llist[cursol])+10
        )

     dfs if cursol == N:
            return abs(A-a)+abs(B-b)+abs(C-c)-30 if min(a, b, c) > 0 else inf

         cursol == N cursol 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 return min(
            dfs(cursol+1, a, b, c),
            # 合成魔法を使っているので+10が必要
            dfs(cursol+1, a+llist[cursol], b, c)+10,
            dfs(cursol+1, a, b+llist[cursol], c)+10,
            dfs(cursol+1, a, b, c+llist[cursol])+10
        ) min(
            dfs(cursol+1, a, b, c),
            # 合成魔法を使っているので+10が必要
            dfs(cursol+1, a+llist[cursol], b, c)+10,
            dfs(cursol+1, a, b+llist[cursol], c)+10,
            dfs(cursol+1, a, b, c+llist[cursol])+10
        ) min dfs(cursol+1, a, b, c) dfs cursol+1 cursol 1 a b c dfs(cursol+1, a+llist[cursol], b, c)+10 dfs(cursol+1, a+llist[cursol], b, c) dfs cursol+1 cursol 1 a+llist[cursol] a llist[cursol] llist cursol b c 10 dfs(cursol+1, a, b+llist[cursol], c)+10 dfs(cursol+1, a, b+llist[cursol], c) dfs cursol+1 cursol 1 a b+llist[cursol] b llist[cursol] llist cursol c 10 dfs(cursol+1, a, b, c+llist[cursol])+10 dfs(cursol+1, a, b, c+llist[cursol]) dfs cursol+1 cursol 1 a b c+llist[cursol] c llist[cursol] llist cursol 10 cursol cursol a a b b c c print(dfs(0, 0, 0, 0)) print dfs(0, 0, 0, 0) dfs 0 0 0 0 if __name__ == "__main__":
    solve() __name__ == "__main__" __name__ "__main__" solve() solve def solve():

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

    def dfs(cursol, a, b, c):
        # すべての竹に対して合成魔法を試したら、不足分は延長 or 短縮魔法を使う
        if cursol == N:
            return abs(A-a)+abs(B-b)+abs(C-c)-30 if min(a, b, c) > 0 else inf

        return min(
            dfs(cursol+1, a, b, c),
            # 合成魔法を使っているので+10が必要
            dfs(cursol+1, a+llist[cursol], b, c)+10,
            dfs(cursol+1, a, b+llist[cursol], c)+10,
            dfs(cursol+1, a, b, c+llist[cursol])+10
        )

    print(dfs(0, 0, 0, 0)) def solve():

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

    def dfs(cursol, a, b, c):
        # すべての竹に対して合成魔法を試したら、不足分は延長 or 短縮魔法を使う
        if cursol == N:
            return abs(A-a)+abs(B-b)+abs(C-c)-30 if min(a, b, c) > 0 else inf

        return min(
            dfs(cursol+1, a, b, c),
            # 合成魔法を使っているので+10が必要
            dfs(cursol+1, a+llist[cursol], b, c)+10,
            dfs(cursol+1, a, b+llist[cursol], c)+10,
            dfs(cursol+1, a, b, c+llist[cursol])+10
        )

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

def solve():

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

    def dfs(cursol, a, b, c):
        # すべての竹に対して合成魔法を試したら、不足分は延長 or 短縮魔法を使う
        if cursol == N:
            return abs(A-a)+abs(B-b)+abs(C-c)-30 if min(a, b, c) > 0 else inf

        return min(
            dfs(cursol+1, a, b, c),
            # 合成魔法を使っているので+10が必要
            dfs(cursol+1, a+llist[cursol], b, c)+10,
            dfs(cursol+1, a, b+llist[cursol], c)+10,
            dfs(cursol+1, a, b, c+llist[cursol])+10
        )

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


if __name__ == "__main__":
    solve()
