N,D,K=list(map(int,input().split())) A=list(map(int,input().split())) C=list(map(int,input().split())) dp=[] for i in range(D+1): dp.append([-10**18]*(K+1)) dp[0][0]=0 for i in range(N): ndp=[] for j in range(D+1): ndp.append([-10**18]*(K+1)) for j in range(min(i+1,D)): for k in range(K+1): if dp[j][k]==-10**18: continue ndp[j][k]=max(dp[j][k],ndp[j][k]) ndp[j+1][min(K,k+C[i])]=max(ndp[j+1][min(K,k+C[i])],dp[j][k]+A[i]) dp=ndp.copy() #print(dp) if dp[D][K]==-10**18: print("No") exit() print(dp[D][K])