#include<bits/stdc++.h>
using namespace std;
int n,m,q,num,t[1001],dis[1001][1001];
int l,r;
void floyd(){
for(int k=l;k<=r;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++) dis[j][i]=dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
dis[i][j]=1e9;
for(int i=0;i<n;i++){
cin>>t[i];
dis[i][i]=0;
}
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
dis[u][v]=dis[v][u]=w;
}
cin>>q;
for(int i=1;i<=q;i++){
int x,y,T;
cin>>x>>y>>T;
for(int j=l;j<n&&r<n;j++){
if(t[j]<=T) r=j;
else break;
}
floyd();
l=r;
if(dis[x][y]<1e9&&t[x]<=T&&t[y]<=T) cout<<dis[x][y]<<endl;
else cout<<-1<<endl;
}
return 0;
}