#include<cstdio>
#include<iostream>
using namespace std;
#define N 1001
int f[N],b[N],s;
struct node{
int jg,mw,bh;
}t[N];
int main()
{
int n,m;
double xx,x1;
scanf("%d%d",&n,&m);
scanf("%lf",&xx);
int x=xx*10;
for(int i=1;i<=n;i++) scanf("%lf",&x1),t[i].jg=x1*10;
for(int i=1;i<=n;i++) scanf("%d",&t[i].mw);
for(int i=1;i<=n;i++) scanf("%d",&t[i].bh);
for(int i=1;i<=m;i++) scanf("%d",&b[i]);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
if(t[i].bh==t[j].bh)
t[j].bh=0;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
if(b[i]==t[j].bh)
{
s+=t[j].mw;
x-=t[j].jg;
t[j].bh=0;
}
for(int i=1;i<=n;i++)
if(t[i].bh)
for(int j=x;j>=t[i].jg;j--)
f[j]=max(f[j],f[j-t[i].jg]+t[i].mw);
printf("%d",f[x]+s);
return 0;
}