#include <bits/stdc++.h>
using namespace std;
int n,m;
int t[205];
int g[205][205];
int Q;
int day;
int main(){
memset(g,0x3f3f3f3f,sizeof(g));
scanf("%d %d",&n,&m);
for(int i = 1;i <= n;++i){
scanf("%d",&t[i]);
}
for(int i = 1;i <= m;++i){
int u,v,w;
scanf("%d %d %d",&u,&v,&w);
g[u][v] = g[v][u] = w;
}
scanf("%d",&Q);
while(Q--){
int x,y,t;
scanf("%d %d %d",&x,&y,&t);
for(int k = day;k <= t;++k){
for(int i = 1;i <= n;++i){
for(int j = 1;j <= n;++j){
g[i][j] = min(g[i][j],g[i][k] + g[k][j]);
}
}
}
day = t+1;
if(g[x][y] == 1061109567){
printf("-1\n");
}
else{
printf("%d\n",g[x][y]);
}
}
return 0;
}