#agc031f. [agc031_f]Walk on Graph
[agc031_f]Walk on Graph
Problem Statement
You are given a connected graph with vertices and edges. The vertices are numbered to . The -th edge is an undirected edge of length connecting Vertex and Vertex .
Additionally, an odd number is given.
You will be given queries, which should be processed. The queries take the following form:
- Given in the -th query are , and . Print
YES
if there exists a path from Vertex to Vertex whose length is modulo , and printNO
otherwise. A path may traverse the same edge multiple times, or go back using the edge it just used.
Here, in this problem, the length of a path is NOT the sum of the lengths of its edges themselves, but the length of the first edge used in the path gets multiplied by , the second edge gets multiplied by , the third edge gets multiplied by , and so on. (More formally, let be the lengths of the edges used, in this order. The length of that path is the sum of .)
Constraints
- is odd.
- The given graph is connected. (It may contain self-loops or multiple edges.)
Input
Input is given from Standard Input in the following format:
Output
Print the answers to the -th query in the -th line.
Sample Input 1
3 2 2 2019
1 2 1
2 3 2
1 3 5
1 3 4
Sample Output 1
YES
NO
The answer to each query is as follows:
- The first query: If we take the path , its length is , so there exists a path whose length is modulo . The answer is
YES
. - The second query: No matter what path we take from Vertex to Vertex , its length will never be modulo . The answer is
NO
.
Sample Input 2
6 6 3 2019
1 2 4
2 3 4
3 4 4
4 5 4
5 6 4
6 1 4
2 6 1110
3 1 1111
4 5 1112
Sample Output 2
YES
NO
NO
Sample Input 3
1 2 3 25
1 1 1
1 1 2
1 1 13
1 1 6
1 1 14
Sample Output 3
YES
YES
YES
Sample Input 4
10 15 10 15
1 2 1
2 3 6
3 4 6
2 5 1
5 6 1
4 7 6
1 8 11
2 9 6
5 10 11
9 10 11
3 6 1
2 5 1
2 7 11
9 10 11
5 6 11
1 3 5
9 8 3
7 7 7
7 10 13
4 1 10
9 3 12
10 10 14
9 2 1
6 6 5
8 8 4
Sample Output 4
YES
NO
NO
NO
NO
NO
NO
YES
YES
NO