#include <bits/stdc++.h>
#define ll long long
#define M 5000
using namespace std;
const int N = INT_MAX;
int n, m, t[M], q, dis[M][M], vis[M];
int main()
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
dis[i][j] = N;
dis[i][i] = 0;
}
}
cin >> n >> m;
for (int i = 0; i < n; i++)
{
cin >> t[i];
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
dis[i][j] = N;
}
}
for (int i = 0; i < m; i++)
{
int x, y, z;
cin >> x >> y >> z;
dis[x][y] = dis[y][x] = z;
}
cin >> q;
while (q > 0)
{
int Time, u, v;
cin >> u >> v >> Time;
for (int k = 0; k < n; k++)
{
if (t[k] <= Time && vis[k] == 0)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (dis[i][k] + dis[k][j] < dis[i][j])
{
dis[i][j] = dis[i][k] + dis[k][j];
}
}
}
vis[k] = 1;
}
}
if (dis[u][v] != N && t[u] <= Time && t[v] <= Time)
cout << dis[u][v];
else
cout << "-1";
cout << endl;
q--;
}
system("pause");
return 0;
}