#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
const int N = 205,M =1e4+5,mod = 7;
ll n, m, t[N], g[N][N],f[N][N];
void updata(ll k) {
for (ll i = 0; i < n;i++) {
for (ll j =0; j < n;j++) {
g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
}
}
}
int main()
{
memset(g, 0x3f, sizeof(g));
for (ll i = 0; i < N;i++)
g[i][i] = 0;
cin >> n >> m;
for (ll i = 0; i <n;i++) {
cin >> t[i];
}
for (ll i = 1; i <= m;i++) {
ll x, y, tt;
scanf("%lld%lld%lld", &x, &y, &tt);
g[x][y] = g[y][x] = tt;
}
ll q;
cin >> q;
for (ll i = 1; i <= q;i++) {
ll x, y, tt;
scanf("%lld%lld%lld", &x, &y, &tt);
ll now = 0;
while (t[now]<=tt && now <n) {
updata(now);
now++;
}
if(tt < t[x] || tt < t[y] || g[x][y] == 4557430888798830399) {
cout << -1 << endl;
}else {
cout << g[x][y] << endl;
}
}
return 0;
}