INF = float("inf") N, D, K = map(int, input().split()) al = [int(a) for a in input().split()] cl = [int(c) for c in input().split()] # dp[j][k]: j個で美しさがk(k=Kはk以上)となる時の最大チ。 dp = [[-INF] * (K + 1) for _ in range(D + 1)] dp[0][0] = 0 for i in range(N): a = al[i] # 満足度 c = cl[i] # 美しさ for j in range(D, 0, -1): # k=K未満 for k in range(K - 1, -1, -1): if k - c < 0: break dp[j][k] = max(dp[j][k], dp[j - 1][k - c] + a) # k=K for k in range(max(0, K - c), K + 1): dp[j][K] = max(dp[j][K], dp[j - 1][k] + a) ans = dp[D][K] print("No" if ans == -INF else ans)