N, D, K = list(map(int, input().split())) A = list(map(int, input().split())) C = list(map(int, input().split())) inf = - 10 ** 18 DP = [[[inf] * (K + 1) for _ in range(D + 1)] for _ in range(2)] DP[0][0][0] = 0 c = C[0] c = min(c, K) DP[0][1][c] = A[0] flag = 0 for i in range(1, N): flag = 1 - flag for d in range(D + 1): for k in range(K + 1): if DP[1 - flag][d][k] == inf: continue a = A[i] c = C[i] c = min(c + k, K) DP[flag][d][k] = max(DP[flag][d][k], DP[1 - flag][d][k]) if d != D: DP[flag][d + 1][c] = max(DP[flag][d + 1][c], DP[1 - flag][d][k] + a) ans = DP[flag][-1][-1] if ans == inf: print("No") else: print(ans)