#include <bits/stdc++.h>
using namespace std;
const int INF=2e9;
int h[8]={0,2,6,4,8,6,10,14};
int s[8],i,j,c,cur,zj;
int mp[110][110];
int dis[110];
bool vis[110];
int main(){
memset(mp,INF,sizeof(mp));
for(int p=1;p<=105;p++) mp[p][p]=0;
memset(dis,INF,sizeof(dis));
for(int i=1;i<=7;i++){
scanf("%d",&s[i]);
if(s[i]) h[i]/=2;
}
scanf("%d %d %d",&i,&j,&c);
int u,v,w;
for(int k=0;k<c;k++){
scanf("%d %d %d",&u,&v,&w);
if(mp[u][v]>h[w]) mp[u][v]=h[w],mp[v][u]=h[w];
}
dis[i]=0, cur=i, vis[cur]=true;
while(true){
for(int p=1;p<=105;p++)
if(!vis[p] and mp[cur][p]!=INF)
if(dis[p]>dis[cur]+mp[cur][p])
dis[p]=dis[cur]+mp[cur][p];
zj=INF;
for(int p=1;p<=105;p++)
if(!vis[p] and dis[p]<zj)
zj=dis[p],cur=p;
if(zj==INF) break;
vis[cur]=true;
}
cout<<dis[j];
return 0;
}