#include<bits/stdc++.h>
using namespace std;
int dis[210][210];
int t[210];
int n,m,q,now;
int main(){
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(i!=j)dis[i][j]=1e9;
for(int i=0;i<n;i++)
cin>>t[i];
for(int w=1;w<=m;w++){
int i1,j1,w1;
cin>>i1>>j1>>w1;
dis[i1][j1]=w1;
dis[j1][i1]=w1;
}
cin>>q;
for(int p=1;p<=q;p++)
{
int x1,y1,t1;
cin>>x1>>y1>>t1;
if(t[now]<=t1&&now<n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(dis[i][now]+dis[now][j]<dis[i][j])
dis[j][i]=dis[i][j]=dis[i][now]+dis[now][j];
}}
now++;
}
if(t[x1]>t1||t[y1]>t1)cout<<-1<<endl;
else
if(dis[x1][y1]==1e9)cout<<-1<<endl;
else cout<<dis[x1][y1]<<endl;
}
return 0;
}