import sys input = sys.stdin.readline N,M = map(int,input().split()) edge = [tuple(map(int,input().split())) for i in range(M)] cost = [[10**18 for j in range(N)] for i in range(N)] for i in range(N): cost[i][i] = 0 for u,v,c in edge: for i in range(u): for j in range(v-1,N): cost[i][j] = min(cost[i][j],cost[i][u-1] + cost[v-1][j] + 1) edge.sort(key=lambda x:x[2]) ans = [[-1 for i in range(N)] for j in range(N)] for u,v,c in edge: for i in range(u): for j in range(v-1,N): cost[i][j] = min(cost[i][j],cost[i][u-1] + cost[v-1][j] - 1) if cost[i][j] <=0 and ans[i][j]==-1: ans[i][j] = c Q = int(input()) res = [-1 for i in range(Q)] for i in range(Q): s,t = map(int,input().split()) res[i] = ans[s-1][t-1] print(*res,sep="\n")