#P1051F. The Shortest Statement

    ID: 3069 Type: RemoteJudge 4000ms 256MiB Tried: 0 Accepted: 0 Difficulty: (None) Uploaded By: Tags>graphsshortest pathstrees*2400

The Shortest Statement

No submission language available for this problem.

Description

You are given a weighed undirected connected graph, consisting of nn vertices and mm edges.

You should answer qq queries, the ii-th query is to find the shortest distance between vertices uiu_i and viv_i.

The first line contains two integers nn and m (1n,m105,mn20)m~(1 \le n, m \le 10^5, m - n \le 20) — the number of vertices and edges in the graph.

Next mm lines contain the edges: the ii-th edge is a triple of integers vi,ui,di (1ui,vin,1di109,uivi)v_i, u_i, d_i~(1 \le u_i, v_i \le n, 1 \le d_i \le 10^9, u_i \neq v_i). This triple means that there is an edge between vertices uiu_i and viv_i of weight did_i. It is guaranteed that graph contains no self-loops and multiple edges.

The next line contains a single integer q (1q105)q~(1 \le q \le 10^5) — the number of queries.

Each of the next qq lines contains two integers uiu_i and vi (1ui,vin)v_i~(1 \le u_i, v_i \le n) — descriptions of the queries.

Pay attention to the restriction mn  20m - n ~ \le ~ 20.

Print qq lines.

The ii-th line should contain the answer to the ii-th query — the shortest distance between vertices uiu_i and viv_i.

Input

The first line contains two integers nn and m (1n,m105,mn20)m~(1 \le n, m \le 10^5, m - n \le 20) — the number of vertices and edges in the graph.

Next mm lines contain the edges: the ii-th edge is a triple of integers vi,ui,di (1ui,vin,1di109,uivi)v_i, u_i, d_i~(1 \le u_i, v_i \le n, 1 \le d_i \le 10^9, u_i \neq v_i). This triple means that there is an edge between vertices uiu_i and viv_i of weight did_i. It is guaranteed that graph contains no self-loops and multiple edges.

The next line contains a single integer q (1q105)q~(1 \le q \le 10^5) — the number of queries.

Each of the next qq lines contains two integers uiu_i and vi (1ui,vin)v_i~(1 \le u_i, v_i \le n) — descriptions of the queries.

Pay attention to the restriction mn  20m - n ~ \le ~ 20.

Output

Print qq lines.

The ii-th line should contain the answer to the ii-th query — the shortest distance between vertices uiu_i and viv_i.

Samples

Sample Input 1

3 3
1 2 3
2 3 1
3 1 5
3
1 2
1 3
2 3

Sample Output 1

3
4
1

Sample Input 2

8 13
1 2 4
2 3 6
3 4 1
4 5 12
5 6 3
6 7 8
7 8 7
1 4 1
1 8 3
2 6 9
2 7 1
4 6 3
6 8 2
8
1 5
1 7
2 3
2 8
3 7
3 4
6 8
7 8

Sample Output 2

7
5
6
7
7
1
2
7