#include using namespace std; using ll = long long; #define rep(i, s, e) for (int i = (int)s; i < (int)e; ++i) #define all(a) (a).begin(), (a).end() ll const INF = 1ll << 60; int main() { cin.tie(nullptr); std::ios_base::sync_with_stdio(false); int N, D, K; cin >> N >> D >> K; vector A(N), C(N); rep(i, 0, N) cin >> A[i]; rep(i, 0, N) cin >> C[i]; vector dp(D + 1, vector(K + 1, -INF)); dp[0][0] = 0; rep(t, 0, N) { for (int i = D - 1; i >= 0; --i) { for (int j = K; j >= 0; --j) { if (dp[i][j] == -INF) continue; dp[i + 1][min(j + C[t], K)] = max(dp[i + 1][min(j + C[t], K)], dp[i][j] + A[t]); } } } if (dp[D][K] == -INF) cout << "No\n"; else cout << dp[D][K] << '\n'; }