#include using namespace std; #define int long long int N,D,K; signed main(){ cin>>N>>D>>K; vector A(N); vector C(N); for(int i = 0; i < N; i++) cin>>A[i]; for(int i = 0; i < N; i++) cin>>C[i]; vector>> dp(N+1,vector>(D+1,vector(K+1,-(1e18)))); vector>> bdp(N+1,vector>(D+1,vector(K+1))); dp[0][0][0] = 0; bdp[0][0][0] = true; for(int i = 0; i < N; i++){ for(int j = 0; j < D; j++){ for(int k = 0; k <= K; k++){ if(!bdp[i][j][k]) continue; dp[i+1][j+1][min(k+C[i],K)] = max(dp[i+1][j+1][min(k+C[i],K)],dp[i][j][k] + A[i]); dp[i+1][j][k] = max(dp[i+1][j][k],dp[i][j][k]); bdp[i+1][j+1][min(k+C[i],K)] = true; bdp[i+1][j][k] = true; } } } if(!bdp[N][D][K]) cout << "No" << endl; else cout << dp[N][D][K] << endl; }