小明最近沉迷一款叫做「Poly Bridge」(桥梁建造师)的游戏,该游戏中,玩家将会扮演桥梁建造师,在不超过预算的情况下建造足够稳定的桥梁让小车通过。
经过几天的练习,富有创造力的小明自认为已经掌握了足够的技巧去建设稳固的桥梁。
现在,游戏难度增大了,变得更加具有挑战性。这个关卡中,有 n 个小岛,编号从 1 到 n,每个小岛之间小明已经建设了 m 座桥梁,桥梁是双向通行的。每一座桥梁都是有承重限制的,具体地,(u,v,w) 表示连接 u 和 v 小岛的桥梁承重为 w,即最多只允许 w 重的小车通过。
这个关卡会给出 q 个任务,每一个任务需要让小车从 x 小岛经过桥梁去往 y 小岛。如果小车安全的到达 y 小岛,那么得分就是该小车的重量,好胜的小明对于每一个任务都想获得最大的分数。问,对于每一个任务,能够获得的最大分数,即小车的最大重量是多少?
第一行输入两个正整数 n,m,分别表示关卡中有 n 个小岛和 m 座桥梁,整数之间用空格隔开。
接下来有 m 行,每行有三个整数 u,v,w,表示 u 小岛到 v 小岛有一座限重为 w 的桥梁。
保证 u != v,但两个小岛之间可能有多座桥梁。
接下来一行输入一个整数 q,表示有 q 个任务。
接下来 q 行,每行两个整数 x, y,表示现在需要让小车从 x 小岛去往 y 小岛,保证 x!= y。
共有 q 行,每行一个整数,表示对于这一次任务,能够获得的最大分数,即小车的最大重量。
如果不能完成任务,即小车不能到达对应的小岛,则输出 -1。
【样例解释】
对于任务 1,小车路线可以是 1 \rightarrow 2 \rightarrow 3,这样,小车最重可以是 3,因此输出 3。
对于任务 2,1 号小岛没有办法通过桥梁去往 4 号小岛,因此输出 -1。
对于任务 3,小车路线可以是 3 \rightarrow 2 \rightarrow 1,这样,小车最重可以是 3,因此输出 3。
【数据范围】
对于所有数据,保证 u!= v,x!= y,且这些小岛编号都在 [1,n] 之间,具体地:
对于 30% 的数据,1 < n < 1000,1 < m < 10,000,1< q< 1000;
对于 60% 的数据,1 < n < 1000,1 < m < 5* 10^4,1 < q< 1000;
对于 100% 的数据,1 < n < 10^4,1 < m < 5* 10^4,1 < q< 3* 10^4 ,0 < w < 10^5。