[<AutoOpen>]
module Program

open System

let read f = stdin.ReadLine() |> f
let reads f = stdin.ReadLine().Split() |> Array.toList |> List.map f

[<EntryPoint>]
let main _ =
    let [n;a;b;c] = reads int
    let ls = Array.map (fun _ -> read int) [|1..n|]

    let rec dfs i x y z =
        if i = n then
            if List.exists ((=) 0) [x;y;z] then
                100000
            else
                // 下の再帰だと一本目の材料を選んだときにも合成魔法を使用している
                // A,B,Cに大して材料は最低一本あるためMP30を引く
                abs (a - x) + abs (b - y) + abs (c - z) - 30
        else
            [
                dfs (i + 1) x y z
                dfs (i + 1) (x + ls.[i]) y z + 10
                dfs (i + 1) x (y + ls.[i]) z + 10
                dfs (i + 1) x y (z + ls.[i]) + 10
            ]
            |> List.min

    dfs 0 0 0 0
    |> printfn "%i"

    0