#include<
iostream >
#include<
cstdio >
using namespace
std;
const int
INF=0x7fffffff;
int n,k,x;
int sum=0;
float
x1,jg1;
struct Cai{
int
jg,mw,bh;
};
Cai
cai[101];
int
visit[101],bh1,k1,f[1001];
void
input()
{
scanf("%d%d%f",&n,&k,&x1);
x=x1*10;
for(int
i=1;i<=n;++i)
{
scanf("%f",&jg1);
cai[i].jg=10*jg1;
}
for(int
i=1;i<=n;++i)
scanf("%d",&cai[i].mw);
for(int
i=1;i<=n;++i)
{
scanf("%d",&bh1);
if(!visit[bh1])
{
cai[i].bh=bh1;
visit[bh1]++;
}
else{
cai[i].bh=0;
cai[i].jg=INF;
cai[i].mw=0;
}
}
for(int
i=1;i<=k;++i)
{
scanf("%d",&k1);
for(int
i=1;i<=n;++i)
{
if(cai[i].bh==k1)
{
x-=cai[i].jg;
cai[i].jg=INF;
sum+=cai[i].mw;
cai[i].mw=0;
}
}
}
}
int main()
{
input();
for(int
i=1;i<=n;++i)
for(int j=x;j>=1;--j)//x shi jg
if(j>=cai[i].jg)
f[j]=max(f[j],f[j-cai[i].jg]+cai[i].mw);
printf("%d\n",f[x]+sum);
return 0;
}