#include<iostream>
#include<algorithm>
#include<iomanip>
const int sz = 2010;
const int vsz = 310;
const int inf = 0x3fffffff;
double f[sz][sz][2], p[sz];
int c[sz], d[sz], dis[vsz][vsz];
int main() {
std::cin.tie(nullptr)->sync_with_stdio(false);
int n, m, v, e;
std::cin >> n >> m >> v >> e;
for (int i = 1; i <= n; i++) std::cin >> c[i];
for (int i = 1; i <= n; i++) std::cin >> d[i];
for (int i = 1; i <= n; i++) std::cin >> p[i];
for (int i = 1; i <= v; i++)
std::fill(dis[i] + 1, dis[i] + v + 1, inf), dis[i][i] = 0;
while (e--) {
int a, b, w;
std::cin >> a >> b >> w;
dis[a][b] = dis[b][a] = std::min(w, dis[a][b]);
}
for (int k = 1; k <= v; k++)
for (int i = 1; i <= v; i++)
for (int j = 1; j <= v; j++)
dis[i][j] = std::min(dis[i][j], dis[i][k] + dis[k][j]);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
f[i][j][0] = f[i][j][1] = inf;
f[1][0][0]=f[1][1][1]=0;
for (int i = 2; i <= n; i++) {
f[i][0][0]=f[i-1][0][0]+dis[c[i-1]][c[i]];
f[i][0][1]=inf;
for (int j = 1; j <= m; j++) {
f[i][j][0]=std::min(f[i-1][j][0]+dis[c[i-1]][c[i]],f[i-1][j][1]+dis[c[i-1]][c[i]]*(1-p[i-1])+dis[d[i-1]][c[i]]*p[i-1]);
f[i][j][1]=std::min(f[i-1][j-1][0]+dis[c[i-1]][d[i]]*p[i]+dis[c[i-1]][c[i]]*(1-p[i]),f[i-1][j-1][1]+dis[c[i-1]][c[i]]*(1-p[i-1])*(1-p[i])+dis[c[i-1]][d[i]]*(1-p[i-1])*p[i]+dis[d[i-1]][c[i]]*p[i-1]*(1-p[i])+dis[d[i-1]][d[i]]*p[i-1]*p[i]);
}
}
double ans = inf;
for (int i = 0; i <= m; i++)
ans = std::min(ans, std::min(f[n][i][0], f[n][i][1]));
printf("%.2lf", ans);
return 0;
}