N, D, K = map(int, input().split()) A = list(map(int, input().split())) C = list(map(int, input().split())) dp = [[-10**18]*(K+1) for _ in range(D+1)] dp[0][0] = 0 for k in range(N): a, c = A[k], C[k] for i in reversed(range(D)): # 採用個数 for j in range(K+1): # 美しさ合計 if dp[i][j] == -10**18: continue j_ = min(j+c, K) dp[i+1][j_] = max(dp[i+1][j_], dp[i][j] + a) if dp[D][K] < -10**15: print('No') else: print(dp[D][K])