#include<iostream>
#include<string.h>
#define ri register int
using namespace std;
const int MAX=0x3f3f3f3f;
char a,b;
int n,k,d[25],ma[25][25];
bool f[25];
inline void dijkstra(ri s,ri e){
memset(d,0x3f,sizeof(d));
d[s]=0;
for(ri i=1;i<=n;i++){
ri mi=-1;
for(ri j=1;j<=n;j++){
if(f[j]==false&&(mi==-1||d[j]<d[mi])){
mi=j;
}
}
f[mi]=true;
for(ri j=1;j<=n;j++){
if(f[j]==false&&ma[mi][j]!=0&&d[mi]+ma[mi][j]<d[j]){
d[j]=d[mi]+ma[mi][j];
}
}
}
ri minn;
if(s==e){
for(ri i=1;i<=n;i++){
if(d[i]!=0)
minn=min(minn,d[i]);
}
cout<<minn*2<<endl;
}else cout<<d[e]<<endl;
}
int main(){
std::ios::sync_with_stdio(false);std::cin.tie(NULL);
cin>>n>>k;
for(ri i=1;i<n;i++){
cin>>ma[i][i+1];
ma[i+1][i]=ma[i][i+1];
}
cin>>ma[1][n];
ma[n][1]=ma[1][n];
int x,y,len;
for(ri i=1;i<=k;i++){
cin>>a>>b>>len;
x=int(a)-64,y=int(b)-64;
if(ma[x][y]==0)ma[x][y]=ma[y][x]=len;
else{
if(ma[x][y]<len)ma[x][y]=ma[y][x]=len;
}
}
cin>>a>>b;x=int(a)-64,y=int(b)-64;
dijkstra(x,y);
return 0;
}