import collections,sys,math,functools,operator,itertools,bisect,heapq,decimal,string,time,random
#sys.setrecursionlimit(10**9)
#sys.set_int_max_str_digits(0)
#n = int(input())
#
#alist = []
#s = input()
n,m,k = map(int,input().split())
#for i in range(n):
#    alist.append(list(map(int,input().split())))
color = list(map(lambda x:int(x)-1,input().split()))
alist = list(map(int,input().split()))
ans = min(alist) * k

c = collections.defaultdict(int)
ss = [set() for i in range(k+1)]
for i in range(k):
    c[color[i]] += 1
    ss[c[color[i]]].add(color[i])
for i in range(k,n):
    c[color[i-k]] -= 1
    c[color[i]] += 1
    ss[c[color[i]]].add(color[i])
for i in range(k+1):
    if ss[i]:
        s = list(ss[i])
        s.sort(key=lambda x:alist[x])
        ans = min(ans,alist[s[0]] * (k-i))
print(ans)