#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=305,NN=2005;
double minn(double x,double y){
return x<y?x:y;
}
int n,m,v,e;
int dij[N][N];
double k[NN],ans=1e8+1.0;
int c[NN],d[NN];
double dp[NN][NN][2];
signed main(){
cin>>n>>m>>v>>e;
memset(dij,127,sizeof dij);
memset(dp,127,sizeof dp);
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<=e;i++){
int u,v,w;
cin>>u>>v>>w;
dij[u][v]=dij[v][u]=minn(dij[u][v],w);
}
for(int z=1;z<=v;z++)
for(int i=1;i<=v;i++)
for(int j=1;j<i;j++)
if(dij[i][j]>dij[i][z]+dij[z][j])
dij[i][j]=dij[j][i]=dij[i][z]+dij[z][j];
dp[1][0][0]=dp[1][1][0]=dp[1][1][1]=0;
for(int i=2;i<=n;i++){
for(int j=0;j<=min(m,i);j++){
dp[i][j][0]=minn(
dp[i-1][j][0]
+
dij[c[i-1]][c[i]]
,
dp[i-1][j][1]
+
dij[c[i-1]][c[i]]*(1-k[i-1])
+
dij[d[i-1]][c[i]]*k[i-1]
);
if(j>0)
dp[i][j][1]=minn(
dp[i-1][j-1][0]
+
dij[c[i-1]][c[i]]*(1-k[i])
+
dij[c[i-1]][d[i]]*k[i]
,
dp[i-1][j-1][1]
+
dij[c[i-1]][c[i]]*(1-k[i-1])*(1-k[i])
+
dij[c[i-1]][d[i]]*(1-k[i-1])*k[i]
+
dij[d[i-1]][c[i]]*k[i-1]*(1-k[i])
+
dij[d[i-1]][d[i]]*k[i-1]*k[i]
);
}
}
for(int i=0;i<=m;i++){
ans=minn(minn(dp[n][i][1],dp[n][i][0]),ans);
}
printf("%.2lf",ans);
return 0;
}