n, d, b = read_line.split.map(&.to_i) a = read_line.split.map(&.to_i) c = read_line.split.map(&.to_i) dp = Array.new(b + 1) { Array.new(d + 1, -1e18.to_i64) } dp[0][0] = 0 n.times do |i| b.downto(0) do |j| nj = {j + c[i], b}.min (d - 1).downto(0) do |k| dp[nj][k + 1] = {dp[nj][k + 1], dp[j][k] + a[i]}.max end end end ans = dp[b][d] puts ans < -1e17 ? "No" : ans