import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long inf = (long) Math.pow(10, 16); int N = sc.nextInt(); int D = sc.nextInt(); int K = sc.nextInt(); int[] A = new int[N]; int[] C = new int[N]; for(int i = 0; i < N; ++i) { A[i] = sc.nextInt(); } for(int i = 0; i < N; ++i) { C[i] = sc.nextInt(); } sc.close(); long[][] dp = new long[D+1][K+1]; for(int d = 0; d <= D; ++d) { for(int k = 0; k <= K; ++k) { dp[d][k] = -inf; } } dp[0][0] = 0; for(int i = 0; i < N; ++i) { long[][] ndp = new long[D+1][K+1]; for(int d = 0; d <= D; ++d) { for(int k = 0; k <= K; ++k) { ndp[d][k] = dp[d][k]; } } for(int d = 0; d < D; ++d) { for(int k = 0; k <= K; ++k) { if (dp[d][k] == -inf) continue; int j = Integer.min(k+C[i], K); if(ndp[d+1][j] == -inf) { ndp[d+1][j] = dp[d][k]+A[i]; } else { ndp[d+1][j] = Long.max(ndp[d+1][j], dp[d][k]+A[i]); } } } dp = ndp; System.gc(); } if (dp[D][K] == -inf) { System.out.println("No"); } else { System.out.println(dp[D][K]); } } }