#include <bits/stdc++.h>
using namespace std;
const int N=105;
struct team{
int a,b;
}q[N];
struct battle{
int a,b;
}w[N];
int n,m,k,c,dp[N][N][N*20],maxx,ans;
int main(){
cin>>n>>m>>k>>c; int x,y;
for(int i=1;i<=n;i++)cin>>q[i].a;
for(int i=1;i<=n;i++)cin>>q[i].b;
for(int i=1;i<=m;i++){
cin>>x>>y;
w[i].a=q[x].a*q[y].a;
w[i].b=q[x].b+q[y].b;
maxx+=w[i].b;
}
for(int i=1;i<=k;i++){
for(int j=i;j<=m;j++){
for(int p=0;p<=maxx;p++){
dp[i][j][p]=dp[i][j-1][p];
if(p>=w[i].b&&(dp[i-1][j-1][p-w[i].b]>0||p==w[i].b))
dp[i][j][p]=max(dp[i][j][p],dp[i-1][j-1][p-w[i].b]+w[i].a);
if(p>=c) ans=max(dp[i][j][p],ans);
}
}
}
if(ans>0) cout<<ans;
else cout<<-1;
return 0;
}