import sys # sys.setrecursionlimit(10**6) def debug(*args): print(*args, file=sys.stderr) n, d, k = map(int, input().split()) a = list(map(int, input().split())) c = list(map(int, input().split())) if sum(sorted(c)[-d:]) < k: print('No') exit() # 前からi個問題を選んで、美しさがmin(j, K)のときの満足度のmax NINF = -(10**18) dp = [[NINF]*(k+1) for _ in range(d+1)] dp[0][0] = 0 for j in range(n): for i in range(min(d, j+1)-1, -1, -1): for b in range(k+1): dp[i+1][min(k, b+c[j])] = max(dp[i+1][min(k, b+c[j])], dp[i][b] + a[j]) # debug(dp) print(dp[-1][-1])