#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=210;
int n,m,q,mp[N][N];
bool b[N];
struct cxk{
int t,x;
}a[N];
bool cmp(cxk a,cxk b){
return a.t<b.t;
}
void Add(int k){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(mp[i][k]+mp[k][j]<mp[i][j])mp[i][j]=mp[i][k]+mp[k][j];
}
signed main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)mp[i][j]=mp[j][i]=1e9;
for(int i=1;i<=n;i++)scanf("%lld",&a[a[i].x=i].t),mp[i][i]=0;
sort(a+1,a+n+1,cmp);
for(int i=1,u,v,w;i<=m;i++)scanf("%lld%lld%lld",&u,&v,&w),mp[++u][++v]=mp[v][u]=w;
scanf("%lld",&q);
int add=1,u,v,t;
while(q--){
scanf("%lld%lld%lld",&u,&v,&t);
while(add<=n&&a[add].t<=t)b[a[add].x]=1,Add(a[add++].x);
printf("%lld\n",(mp[++u][++v]!=(int)1e9&&b[u]&&b[v]?mp[u][v]:-1));
}
}