from collections import * N, D, K = map(int, input().split()) A = list(map(int, input().split())) C = list(map(int, input().split())) def f(d, k): return d * (K + 1) + k pre = defaultdict(lambda : None) pre[0] = 0 for a, c in zip(A, C): dp = defaultdict(lambda : None) for d in range(D + 1): for k in range(K + 1): if pre[f(d,k)] is None: continue if dp[f(d,k)] is None: dp[f(d,k)] = pre[f(d,k)] else: dp[f(d,k)] = max(dp[f(d,k)], pre[f(d,k)]) if d != D: nd = d + 1 nk = min(K, k + c) if dp[f(nd,nk)] is None: dp[f(nd,nk)] = pre[f(d,k)] + a else: dp[f(nd,nk)] = max(dp[f(nd,nk)], pre[f(d,k)] + a) dp, pre = pre, dp if pre[f(D,K)] is not None: print(pre[f(D,K)]) else: print("No")