INF = 10 ** 18 N, D, K = map(int, input().split()) A = list(map(int, input().split())) C = list(map(int, input().split())) dp = [[[-INF for k in range(K + 1)] for d in range(D + 1)] for n in range(N + 1)] dp[0][0][0] = 0 for n in range(N): for d in range(D + 1): for k in range(K + 1): dp[n + 1][d][k] = max(dp[n + 1][d][k], dp[n][d][k]) if d < D and dp[n][d][k] != -INF: dp[n + 1][d + 1][min(K, k + C[n])] = max( dp[n + 1][d + 1][min(K, k + C[n])], dp[n][d][k] + A[n] ) ans = dp[N][D][K] if ans == -INF: ans = -1 print(ans)