a = gets.split.map(&:to_i) b = [] a[0].times do b << gets.split.map(&:to_i) end memo = [b.first] # p memo (0..a[0]-1).each do |n| # p b[n] tmp = [] a[1].times do |m| break unless b[n+1] memo.last.length.times do |l| # p b[n][l] + b[n+1][m] sum = memo[n][l] + b[n+1][m] tmp << sum if sum <= a[2] end end # p "times:#{n}" # p memo memo << tmp unless tmp.empty? end # p "hoge", memo p memo.count == 1 ? -1 : a[2] - memo.last.max