#include using namespace std; vector>> make_3Dvec(int i, int j, int k, int init){ vector>> vec(i, vector>(j, vector(k, init))); return vec; } constexpr int INF = -1e9; int main () { int n,d,k; cin >> n >> d >> k; vector a(n); vector c(n); for(auto &el : a){ cin >> el; } for(auto &el : c){ cin >> el; } auto dp = make_3Dvec(n + 1, d + 1, k + 1, INF); dp[0][0][0] = 0; for(int i = 0; i < n; i++){ for(int j = 0; j <= d; j++){ for(int l = 0; l <= k; l++){ int now = dp[i][j][l]; if(now == INF) continue; dp[i + 1][j][l] = max(dp[i + 1][j][l], now); if(j < d){ dp[i + 1][j + 1][min(k, l + c[i])] = max( dp[i + 1][j + 1][min(k, l + c[i])], now + a[i] ); } } } } int ans = dp[n][d][k]; if(ans == INF) cout << "No" << endl; else cout << ans << endl; }