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(N)] DP[0][0][0] = 0 c = C[0] c = min(c, K) DP[0][1][c] = A[0] for i in range(1, N): for d in range(D + 1): for k in range(K + 1): a = A[i] c = C[i] c = min(c + k, K) DP[i][d][k] = max(DP[i][d][k], DP[i - 1][d][k]) if d != D: DP[i][d + 1][c] = max(DP[i][d + 1][c], DP[i - 1][d][k] + a) ans = DP[-1][-1][-1] if ans == inf: print("No") else: print(ans)