import sys
n,m=map(int,input().split())
s=list(map(int,sys.stdin.readline().split()))
T =[[s[i],i]for i in range(n)]
T.sort(key=lambda x:x[0])
T_f=[0]*n
data=[[float('inf') for i in range(n)] for i in range(n)]
for i in range(m):
a,b,l=map(int,sys.stdin.readline().split())
data[a][b]=l
data[b][a]=l
Q=int(input())
t0=0
for i in range(Q):
x,y,t=map(int,input().split())
pool=[]
for j in range(t0,len(T)):
if t>=T[j][0]:
pool.append(T[j][1])
T_f[T[j][1]]=1
else:
t0=j
break
for i in pool:
for j in range(n):
for z in range(n):
data[j][z]=min(data[j][z],data[j][i]+data[i][z])
if T_f[x]==T_f[y]==1 and data[x][y]<=100000:
print(data[x][y])
else:
print('-1')