INF = float("inf") n, d, k = map(int, input().split()) al = list(map(int, input().split())) cl = list(map(int, input().split())) # dp[i][j][k]: i個目の問題まででj個で美しさbとなるときの最大値 dp = [[-INF] * (k + 1)*(d + 1) for _ in range(2)] dp[0][0] = 0 for i in range(1, n + 1): dp[i % 2] = [-INF] * (k + 1)*(d + 1) a = al[i - 1] c = cl[i - 1] for j in range(d + 1): for b in range(k + 1): dp[i % 2][j*k + b] = max(dp[(i - 1) % 2][j*k + b], dp[(i - 1) % 2][(j - 1)*k + max(0, b - c)] + a) ans = dp[n % 2][d*k + k] print("No" if ans == -INF else ans)