import collections,sys,math,functools,operator,itertools,bisect,heapq,decimal,string,time,random #sys.setrecursionlimit(10**9) #sys.set_int_max_str_digits(0) #input = sys.stdin.readline #n = int(input()) # #alist = [] #s = input() n,d,k = map(int,input().split()) #for i in range(n): # alist.append(list(map(int,input().split()))) a = list(map(int,input().split())) c = list(map(int,input().split())) dd = c[:] dd.sort(reverse=True) if sum(dd[:d]) < k: exit(print('No')) dp = [[-10**18 for i in range(k+1)] for j in range(d+1)] dp[0][0] = 0 for i in range(n): ndp = [[-10**18 for i in range(k+1)] for j in range(d+1)] for j in range(d): for l in range(k+1): ndp[j][l] = dp[i][j][l] ndp[j+1][min(k,l+c[i])] = max(ndp[j+1][min(k,l+c[i])],dp[j][l] + a[i]) dp = ndp print(dp[d][k])