#include<bits/stdc++.h>
using namespace std;
int a[200][200],b[200][200],c[200],n,k,m,s,t,u,v,d;
int main()
{
for(int register i=1;i<=120;++i)
for(int register j=1;j<=120;++j)
a[i][j]=21474848;
cin>>n>>k>>m>>s>>t;
for(int register i=1;i<=n;++i)
cin>>c[i];
for(int register i=1;i<=k;++i)
for(int register j=1;j<=k;++j)
cin>>b[i][j];
for(int register i=1;i<=m;++i)
{
cin>>u>>v>>d;
if(b[c[v]][c[u]]==0)
a[u][v]=min(a[u][v],d);
if(b[c[u]][c[v]]==0)
a[v][u]=min(a[v][u],d);
}
for(int register k=1;k<=n;++k)
for(int register i=1;i<=n;++i)
for(int register j=1;j<=n;++j)
if(b[c[k]][c[i]]==0 && b[c[j]][c[i]]==0 && b[c[j]][c[k]]==0)
a[i][j]=min(a[i][k]+a[k][j],a[i][j]);
if(a[s][t]<21474848)
cout<<a[s][t];
else
cout<<"-1";
return 0;
}