object Main {

  def main(args: Array[String]): Unit = {
    val sc = new java.util.Scanner(System.in)

    val N, A, B, C = sc.nextInt()
    val L = Array.fill(N)(sc.nextInt())

    // 先に合成した場合と, 後から合成した場合は同様.
    // N <= 8 なので, A, B, C, 合成に使わないという選択肢を全部に選んでも 4^8 = 2^16 = 65536 パターン

    def solve(): Int = {
      def dfs(i: Int, a: Int, b: Int, c: Int): Int =
        if (i < N)
          (dfs(i+1, a + L(i), b, c) + 10 ::
           dfs(i+1, a, b + L(i), c) + 10 ::
           dfs(i+1, a, b, c + L(i)) + 10 ::
           dfs(i+1, a, b, c)             :: Nil).min
        else if (a != 0 && b != 0 && c != 0)
          Math.abs(A - a) + Math.abs(B - b) + Math.abs(C - c) - 30
        else Int.MaxValue / 10

      dfs(0, 0, 0, 0)
    }

    println(solve())
  }

}
