INF = 1 << 60 MAX_K = 500 N, D, K = map(int, input().split()) A = list(map(int, input().split())) C = list(map(int, input().split())) dp = [[-1] * (MAX_K+1) for _ in range(D+1)] dp[0][0] = 0 # i : i 問採用して # j : 美しさが j のときの # 満足度の最大値 for a, c in zip(A, C): for i in reversed(range(D)): for j in range(MAX_K): if dp[i][j] == -1: continue nj = min(j+c, MAX_K) dp[i+1][nj] = max(dp[i+1][nj], dp[i][j] + a) ans = max(dp[D][j] for j in range(K, MAX_K+1)) if ans == -1: print('No') else: print(ans)