#include <bits/stdc++.h>
using namespace std;
int i,graph[10][10],dis[10],Begin,End,dx[10],temp,temp2,temp3,temp4,check[10],checklen,minn,mini;
const int INF=0xfffffff;
bool vis[10];
int main()
{
dx[1]=2;dx[2]=6;dx[3]=4;dx[4]=8;dx[5]=6;dx[6]=10;dx[7]=14;
for(i=0;i<10;i++)
for(int j=0;j<10;j++)
{
if(i==j)graph[i][j]=0;else
graph[i][j]=INF;
}
for(i=1;i<=7;i++)
{
cin>>temp;
dx[i]=dx[i]*(temp+1);
}
scanf("%d%d%d",&Begin,&End,&temp);
for(i=0;i<temp;i++)
{
scanf("%d%d",&temp2,&temp3);
scanf("%d",&temp4);
graph[temp3][temp2]=graph[temp2][temp3]=dx[temp4];
}
while(!vis[End])
{
minn=INF;
dis[Begin]=0;
vis[Begin]=true;
for(i=1;i<=temp;i++)
{
if(graph[Begin][i]!=INF&&vis[i]==true)
{
if(dis[i]>graph[Begin][i]+dis[Begin])
dis[i]=graph[Begin][i]+dis[Begin];
}
}
for(i=1;i<9;i++)
{
if(!vis[i]&&dis[i]<minn){minn=dis[i];Begin=i;}
}
}
cout<<dis[End];
return 0;
}