#D657. The Shortest Statement
The Shortest Statement
The Shortest Statement
You are given a weighed undirected connected graph, consisting of n vertices and m edges.
You should answer q queries, the i-th query is to find the shortest distance between vertices u_i and v_i.
Input
The first line contains two integers n and m~(1 ≤ n, m ≤ 10^5, m - n ≤ 20) — the number of vertices and edges in the graph.
Next m lines contain the edges: the i-th edge is a triple of integers v_i, u_i, d_i~(1 ≤ u_i, v_i ≤ n, 1 ≤ d_i ≤ 10^9, u_i ≠ v_i). This triple means that there is an edge between vertices u_i and v_i of weight d_i. It is guaranteed that graph contains no self-loops and multiple edges.
The next line contains a single integer q~(1 ≤ q ≤ 10^5) — the number of queries.
Each of the next q lines contains two integers u_i and v_i~(1 ≤ u_i, v_i ≤ n) — descriptions of the queries.
Pay attention to the restriction m - n ~ ≤ ~ 20.
Output
Print q lines.
The i-th line should contain the answer to the i-th query — the shortest distance between vertices u_i and v_i.
Examples
Input
3 3 1 2 3 2 3 1 3 1 5 3 1 2 1 3 2 3
Output
3 4 1
Input
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
Output
7 5 6 7 7 1 2 7
inputFormat
Input
The first line contains two integers n and m~(1 ≤ n, m ≤ 10^5, m - n ≤ 20) — the number of vertices and edges in the graph.
Next m lines contain the edges: the i-th edge is a triple of integers v_i, u_i, d_i~(1 ≤ u_i, v_i ≤ n, 1 ≤ d_i ≤ 10^9, u_i ≠ v_i). This triple means that there is an edge between vertices u_i and v_i of weight d_i. It is guaranteed that graph contains no self-loops and multiple edges.
The next line contains a single integer q~(1 ≤ q ≤ 10^5) — the number of queries.
Each of the next q lines contains two integers u_i and v_i~(1 ≤ u_i, v_i ≤ n) — descriptions of the queries.
Pay attention to the restriction m - n ~ ≤ ~ 20.
outputFormat
Output
Print q lines.
The i-th line should contain the answer to the i-th query — the shortest distance between vertices u_i and v_i.
Examples
Input
3 3 1 2 3 2 3 1 3 1 5 3 1 2 1 3 2 3
Output
3 4 1
Input
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
Output
7 5 6 7 7 1 2 7
样例
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
7
5
6
7
7
1
2
7
</p>