from collections import * from itertools import * from functools import cache, partial from pprint import pprint import sys from typing import Any, Final try: from icecream import ic except ImportError: # Graceful fallback if IceCream isn't installed. ic = lambda *a: None if not a else (a[0] if len(a) == 1 else a) # noqa debug = partial(print, file=sys.stderr) dpprint = partial(pprint, stream=sys.stderr) sys.setrecursionlimit(10**6) MOD = 998244353 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 の時の最大の満足度 ic(N, D, K) ic(A, C) dp = [[-INF] * (K + 1) for _ in range(D + 1)] dp[0][0] = 0 for i in range(N): dp2 = [[-INF] * (K + 1) for _ in range(D + 1)] a = A[i] c = C[i] for j in range(D): # 問題 i を採用しない for k in range(K + 1): dp2[j][k] = max(dp2[j][k], dp[j][k]) # 問題 i を採用する for k in range(K + 1): dp2[j + 1][min(K, k + c)] = max(dp2[j + 1][min(K, k + c)], dp[j][k] + a) dp = dp2 # ic(dp) d = dp[D] ans = max(d[K:]) if ans == -INF: print("No") else: print(ans)