#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2010;
int n,m,v,e;
int c[N],d[N],dis[N][N];
double k[N],dp[N][N][2];
double ans=1e18;
signed main(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin>>n>>m>>v>>e;
for(int i=1;i<=n;i++) cin>>c[i];
for(int i=1;i<=n;i++) cin>>d[i];
for(int i=1;i<=n;i++) cin>>k[i];
for(int i=1;i<=v;i++) for(int j=1;j<=v;j++) dis[i][j]=(i!=j)*1e14;
for(int i=1;i<=e;i++){
int a,b,w;
cin>>a>>b>>w;
dis[a][b]=min(dis[a][b],w),dis[b][a]=min(dis[b][a],w);
}
for(int K=1;K<=v;K++)
for(int i=1;i<=v;i++)
for(int j=1;j<=v;j++)
dis[i][j]=min(dis[i][j],dis[i][K]+dis[K][j]);
for(int i=0;i<=n;i++) for(int j=0;j<=m;j++) dp[i][j][0]=dp[i][j][1]=1e14;
dp[1][0][0]=dp[1][1][1]=0;
for(int i=2;i<=n;i++){
dp[i][0][0]=dp[i-1][0][0]+dis[c[i-1]][c[i]];
for(int j=1;j<=min(i,m);j++){
dp[i][j][0]=min(
dp[i-1][j][0] + dis[c[i-1]][c[i]],
dp[i-1][j][1] + k[i-1] * dis[d[i-1]][c[i]] + (1.0-k[i-1]) * dis[c[i-1]][c[i]]);
dp[i][j][1]=min(
dp[i-1][j-1][0] + k[i] * dis[c[i-1]][d[i]] + (1.0-k[i-1]) * dis[c[i-1]][c[i]],
dp[i-1][j-1][1] + k[i-1]*k[i] * dis[d[i-1]][d[i]] + (1.0-k[i-1])*(1.0-k[i]) * dis[c[i-1]][c[i]] + k[i-1]*(1.0-k[i]) * dis[d[i-1]][c[i]] + (1.0-k[i-1])*k[i] * dis[c[i-1]][d[i]]);
}
}
for(int i=0;i<=m;i++) ans=min(ans,min(dp[n][i][0],dp[n][i][1]));
printf("%.2lf",ans);
return 0;
}