V = gets.split.map(&:to_i).sort def f(nums) dp = Array.new(31, Float::INFINITY) dp[0] = 0 30.times do |i| c = dp[i] + 1 nums.each do |n| m = i + n next if m > 30 dp[m] = c if dp[m] > c end end V.map { |v| dp[v] }.sum end ans = Float::INFINITY [*1..30].combination(3) do |nums| v = f(nums) ans = v if ans > v end puts ans