minf=-10**18 ans=minf N,M,K=map(int,input().split()) V=list(map(int,input().split())) C=list(map(int,input().split())) dp=[[minf for _ in range(K+1)] for _ in range(M+1)] ; dp[0][0]=0 for i in range(N): #問題番号 v,c=V[i],C[i] #価値,美しさ for j in range(M,0,-1): #何個採用したか 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]+v) for k in range(max(0,K-c),K+1): dp[j][K]=max(dp[j][K],dp[j-1][k]+v) print(dp[M][K] if -10**17