vnum,rnum=map(int,input().split())
t=[]
t+=[int(x) for x in input().split()]
d=[[1e9 for i in range(vnum)] for i in range(vnum)]
for i in range(vnum):
d[i][i]=0
for i in range(rnum):
a,b,c=map(int,input().split())
d[a][b]=d[b][a]=c
ask=int(input())
def Floyd(k):
for i in range(vnum):
for j in range(vnum):
if d[i][j]>d[i][k]+d[j][k]:
d[i][j]=d[j][i]=d[i][k]+d[j][k]
cur =0
for i in range(ask):
a,b,c=map(int,input().split())
while(t[cur]<=c and cur <vnum-1):
Floyd(cur)
cur+=1
if t[a]>c or t[b]>c:
print(-1)
elif d[a][b]==1e9:
print(-1)
else:
print(d[a][b])