V0, V1, V2, V3 = gets.split.map(&:to_i) D = [*1..30] def f(v, a, b, c) @dp ||= {} @dp[[v, a, b, c]] ||= if v < 0 Float::INFINITY elsif v == 0 0 else [f(v - a, a, b, c), f(v - b, a, b, c), f(v - c, a, b, c)].min + 1 end end ans = D.product(D, D).map {|a, b, c| f(V0, a, b, c) + f(V1, a, b, c) + f(V2, a, b, c) + f(V3, a, b, c) }.min puts ans