use proconio::input; fn main() { input!{ n: usize, d: usize, k: usize, a: [i64;n], c: [usize;n] } let mut dp= vec![vec![-1<<60;d+1];k+1]; dp[0][0] = 0; for i in 0..n{ let mut ndp= dp.clone(); for j in 0..=k{ for i2 in 0..d{ if dp[j][i2] == -1<<60{continue;} ndp[(j+c[i]).min(k)][i2+1] = ndp[(j+c[i]).min(k)][i2+1].max(dp[j][i2] + a[i]) } } dp = ndp } println!("{}",if dp[k][d] == -1<<60 {"No".to_string()} else {dp[k][d].to_string()}) }