#include<bits/stdc++.h>
using namespace std;
int a[110],b[110],q[110],p[110];
int ans;
int flag;
int n,m,k,c;
int check() {
int sum=0;
for(int i=1; i<=k; i++) {
sum+=a[q[i]]*a[p[i]];
}
return sum;
}
void sa() {
double t=10000,down=0.999;
while(t>1e-11) {
int x=rand()%m+1,y=rand()%m+1;
swap(q[x],q[y]);
swap(p[x],p[y]);
int sumx=0;
for(int i=1; i<=k; i++) {
if(sumx<c) {
sumx+=b[q[i]]+b[p[i]];
} else break;
}
if(sumx<c) {
t*=down;
continue;
}
int k1=check();
if(k1>ans) {
ans=k1;
} else if(exp((ans-k1)/t)<double(rand())/RAND_MAX);
else {
swap(q[x],q[y]);
swap(p[x],p[y]);
}
t*=down;
}
}
void solve() {
for(int i=1; i<=20; i++)
sa();
}
int main() {
scanf("%d%d%d%d",&n,&m,&k,&c);
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
for(int i=1; i<=n; i++)
scanf("%d",&b[i]);
for(int i=1; i<=m; i++)
scanf("%d%d",&p[i],&q[i]);
solve();
if(ans!=0)
printf("%d",ans);
else printf("-1");
}