#include<bits/stdc++.h>
#define int long long
#define ll long long
#define re read()
using namespace std;
const int N=3e5+5;
const int NN=3e3+5;
inline ll read(){
ll x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int q[205],k;
int c[205];
int d[3005][3005];
signed main(){
ios::sync_with_stdio(false);
int n=re,m=re;
memset(d,0x3f,sizeof(d));
memset(c,0x3f,sizeof(c));
for(int i=0;i<n;i++){
d[i][i]=0;
cin>>c[i];
}
for(int i=1;i<=m;i++){
int u=re,v=re,w=re;
d[u][v]=d[v][u]=w;
}
int qq=re;
for(int l=1;l<=qq;l++) {
int x=re,y=re,t=re;
while(c[k]<=t)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
k++;
}
if(d[x][y]==1061109567||c[x]>t||c[y]>t) printf("-1\n");
else printf("%d\n",d[x][y]);
}
return 0;}