RT,
#include <bits/stdc++.h>
using namespace std;
int i,graph[10][10],dis[100],Begin,End,dx[10],temp,temp2,temp3,temp4,check[10],checklen,minn,mini,n;
const int INF=2e9;
bool vis[100];
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=0;i<100;i++)
dis[i]=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%d",&temp2,&temp3,&temp4);
graph[temp2][temp3]=min(graph[temp2][temp3],temp4);
}
//核心部分
vis[Begin]=true;
dis[Begin]=0;
while(!vis[End])
{
for(int i=1;i<=temp;i++)
if(graph[Begin][i]!=INF&&!vis[i])
{
if(dis[i]>dis[Begin]+graph[Begin][i])dis[i]=dis[Begin]+graph[Begin][i];
}
minn=INF;
for(i=1;i<=temp;i++)
{
if(!vis[i]&&dis[i]<minn){minn=dis[i];mini=i;}
}
Begin =mini;
vis[Begin]=true;
}
cout<<dis[End];
return 0;
}