N, D, K = map(int, input().split()) A = list(map(int, input().split())) C = list(map(int, input().split())) INF = float("inf") # dp([i])[j][k] := i 番目まで考えたときに j 個の問題を採用し美しさが k の時の最大の満足度 dp = [[-INF] * (K + 1) for _ in range(D + 1)] dp[0][0] = 0 for i in range(N): a = A[i] c = C[i] for j in reversed(range(D)): for k in reversed(range(K + 1)): if dp[j][k] == -INF: continue # 問題 i を採用する dp[j + 1][min(K, k + c)] = max(dp[j + 1][min(K, k + c)], dp[j][k] + a) ans = dp[D][K] if ans == -INF: print("No") else: print(ans)