def readints(): return list(map(int, input().split())) INF = 10**18 N, D, K = readints() A = readints() C = readints() # dp[d][k] = max sum(A) of d problems with k beautifulness dp = [[-INF] * (K+1) for _ in range(D+1)] dp[0][0] = 0 for i in range(N): for d in range(D-1, -1, -1): for k in range(K, -1, -1): if dp[d][k] == -INF: continue k2 = min(K, k+C[i]) dp[d+1][k2] = max(dp[d+1][k2], dp[d][k] + A[i]) ans = dp[-1][-1] if ans == -INF: print('No') else: print(ans)