Codeforces Round 286 (Div. 1) |
---|

Finished |

Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

brute force

dfs and similar

dsu

graphs

*2400

No tag edit access

The problem statement has recently been changed. View the changes.

×
D. Mr. Kitayuta's Colorful Graph

time limit per test

4 secondsmemory limit per test

256 megabytesinput

standard inputoutput

standard outputMr. Kitayuta has just bought an undirected graph with *n* vertices and *m* edges. The vertices of the graph are numbered from 1 to *n*. Each edge, namely edge *i*, has a color *c*_{i}, connecting vertex *a*_{i} and *b*_{i}.

Mr. Kitayuta wants you to process the following *q* queries.

In the *i*-th query, he gives you two integers - *u*_{i} and *v*_{i}.

Find the number of the colors that satisfy the following condition: the edges of that color connect vertex *u*_{i} and vertex *v*_{i} directly or indirectly.

Input

The first line of the input contains space-separated two integers - *n* and *m*(2 ≤ *n* ≤ 10^{5}, 1 ≤ *m* ≤ 10^{5}), denoting the number of the vertices and the number of the edges, respectively.

The next *m* lines contain space-separated three integers - *a*_{i}, *b*_{i}(1 ≤ *a*_{i} < *b*_{i} ≤ *n*) and *c*_{i}(1 ≤ *c*_{i} ≤ *m*). Note that there can be multiple edges between two vertices. However, there are no multiple edges of the same color between two vertices, that is, if *i* ≠ *j*, (*a*_{i}, *b*_{i}, *c*_{i}) ≠ (*a*_{j}, *b*_{j}, *c*_{j}).

The next line contains a integer- *q*(1 ≤ *q* ≤ 10^{5}), denoting the number of the queries.

Then follows *q* lines, containing space-separated two integers - *u*_{i} and *v*_{i}(1 ≤ *u*_{i}, *v*_{i} ≤ *n*). It is guaranteed that *u*_{i} ≠ *v*_{i}.

Output

For each query, print the answer in a separate line.

Examples

Input

4 5

1 2 1

1 2 2

2 3 1

2 3 3

2 4 3

3

1 2

3 4

1 4

Output

2

1

0

Input

5 7

1 5 1

2 5 1

3 5 1

4 5 1

1 2 2

2 3 2

3 4 2

5

1 5

5 1

2 5

1 5

1 4

Output

1

1

1

1

2

Note

Let's consider the first sample.

- Vertex 1 and vertex 2 are connected by color 1 and 2.
- Vertex 3 and vertex 4 are connected by color 3.
- Vertex 1 and vertex 4 are not connected by any single color.

Codeforces (c) Copyright 2010-2023 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Jun/07/2023 22:59:28 (j3).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|