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[i][d][k] = max sum(A) of d problems with k beautifulness dp = [[[-INF] * (K+1) for _ in range(D+1)] for _ in range(N+1)] dp[0][0][0] = 0 for i in range(N): # pass for k in range(K+1): for d in range(D+1): dp[i+1][d][k] = dp[i][d][k] # take for k in range(K+1): for d in range(D): dp[i+1][d+1][min(K, k+C[i])] = max(dp[i+1][d+1][min(K, k+C[i])], dp[i][d][k] + A[i]) ans = dp[-1][-1][-1] if ans < 0: print('No') else: print(ans) if __name__ == '__main__': # deep_recursion() main()