#include<bits/stdc++.h>
using namespace std;
int n,m,v,e;
int c[2010],d[2010];
double dp[2010][2010][5];
double p[2010];
int a[310][310];
int main()
{
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>>p[i];
memset(a,0x3f,sizeof(a));
for(int i=1;i<=e;i++)
{
int x,y,z;
cin>>x>>y>>z;
a[x][y]=z;
a[y][x]=z;
}
for(int k=1;k<=v;k++)
{
for(int i=1;i<=v;i++)
{
for(int j=1;j<=v;j++)
{
if(i==j) continue;
a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
}
}
}
for(int i=0;i<=n;i++)
{
for(int j=0;j<=m;j++)
{
dp[i][j][1]=999999.0;
dp[i][j][0]=999999.0;
}
}
dp[0][0][0]=0;
dp[0][0][1]=0;
for(int i=1;i<=n;i++)
{
for(int j=0;j<=min(i,m);j++)
{
dp[i][j][0]=min(dp[i-1][j][0]*1.0,dp[i-1][j][1]*1.0);
if(j!=0) dp[i][j][1]=min(dp[i-1][j-1][0]*1.0+1.0*a[c[i]][d[i]]*p[i],dp[i-1][j-1][1]*1.0+1.0*a[c[i]][d[i]]*p[i]);
}
}
double minn=999999.0;
for(int i=1;i<=m;i++)
{
minn=min(minn,dp[n][i][0]);
minn=min(minn,dp[n][i][1]);
}
printf("%0.2f",minn);
return 0;
}