def readints(): return list(map(int, input().split())) def deep_recursion(): import sys import pypyjit # type: ignore sys.setrecursionlimit(550000) pypyjit.set_param('max_unroll_recursion=-1') def main(): INF = 10**18 N, D, K = readints() A = readints() C = readints() # dp[d][k] = max sum(A) of d problems with k beautifulness dp = {(0, 0): 0} for i in range(N): dpnew = {} # pass for d, k in dp: dpnew[d, k] = dp[d, k] # take for d, k in dp: k2 = min(K, k+C[i]) if (d+1, k2) in dpnew: dpnew[d+1, k2] = max(dpnew[d+1, k2], dp[d, k] + A[i]) else: dpnew[d+1, k2] = dp[d, k] + A[i] dp = dpnew if (D, K) in dp: print(dp[D, K]) else: print('No') if __name__ == '__main__': # deep_recursion() main()