(n,d,k),a,c=[[*map(int,s.split())]for s in open(0)] INF=1<<60 dp=[[-INF]*(k+1)for _ in range(d+1)] dp[0][0]=0 for a,c in zip(a,c): ndp=[t[:]for t in dp] for j in range(d+1): for nk in range(k+1): nk2=min(k,nk+c) nj=j+1 if nj<=d and dp[j][nk]!=-INF: ndp[nj][nk2]=max(ndp[nj][nk2],dp[j][nk]+a) dp=[t[:]for t in ndp] ans=dp[d][k] print(['No',ans][-INF