#include using namespace std; vector>> make_3Dvec(int i, int j, int k, long long init){ return vector>>( i, vector>(j, vector(k, init)) ); } int main () { int n, d, k; cin >> n >> d >> k; vector a(n), c(n); for (auto &el : a) cin >> el; for (auto &el : c) cin >> el; const long long NEG = -(1LL << 60); auto dp = make_3Dvec(n + 1, d + 1, k + 1, NEG); 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++) { long long now = dp[i][j][l]; if (now == NEG) continue; dp[i + 1][j][l] = max(dp[i + 1][j][l], now); if (j < d) { int nl = min(k, (int)(l + c[i])); dp[i + 1][j + 1][nl] = max(dp[i + 1][j + 1][nl], now + a[i]); } } } } long long ans = dp[n][d][k]; if (ans == NEG) cout << "No" << endl; else cout << ans << endl; }