#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,k,m,s,t,c[110],a[110][110],w[110][110];
int main(){
cin>>n>>k>>m>>s>>t;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
w[i][j]=99999999;
}
}
for(int i=1;i<=n;i++)cin>>c[i];
for(int i=1;i<=k;i++){
for(int j=1;j<=k;j++)
cin>>a[i][j];
}
for(int i=1;i<=m;i++){
int u,v,d;
cin>>u>>v>>d;
if(a[c[u]][c[v]]==0&&c[u]!=c[v])w[u][v]=min(w[u][v],d);
if(a[c[v]][c[u]]==0&&c[u]!=c[v])w[v][u]=min(w[v][u],d);
}
if(c[s]==c[t]){
cout<<-1;return 0;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i!=j){
for(int k=1;k<=n;k++){
if(j!=k&&i!=k){
w[i][j]=min(w[i][j],w[i][k]+w[k][j]);
}
}
}
}
}
if(w[s][t]==99999999)cout<<-1;
else cout<<w[s][t];
return 0;
}