N,M,K = map(int,input().split()) C = [0]+list(map(int,input().split())) A = [0]+list(map(int,input().split())) amax = max(A) D = {i:0 for i in range(1,M+1)} for i in range(1,K+1): D[C[i]] += 1 ans = 10**15 for j in range(1,M+1): ans = min(ans,A[j]*(K-D[j])) for i in range(2,N+1): if i+K-1>N:break D[C[i-1]] -= 1 D[C[i+K-1]] += 1 high = K*amax low = 0 while high-low>1: mid = (high+low)//2 flag = False for j in range(1,M+1): if A[j]*(K-D[j])<=mid: flag = True break if flag: high = mid else: low = mid ans = min(ans,high) print(ans)