#agc031f. [agc031_f]Walk on Graph

[agc031_f]Walk on Graph

問題文

NN 頂点 MM 辺の連結なグラフが与えられます.各頂点には 1,2,...,N1, 2,...,N と番号がついています. i(1leqileqM)i(1 \\leq i \\leq M) 番目の辺は頂点 AiA_i と頂点 BiB_i を繋ぐ長さ CiC_i の無向辺です. また,奇数 MODMOD が与えられます.

QQ 個のクエリが与えられるので,処理してください.クエリの形式は以下の通りです.

  • ii 番目のクエリでは,Si,Ti,RiS_i,T_i,R_i が与えられる.頂点 SiS_i から頂点 TiT_i へ至る経路であって,長さを MODMOD で割った余りが RiR_i になるようなものが存在する場合は YES を,存在しない場合は NO を出力する.ただし同じ辺を複数回通っても,来た辺をすぐ戻ってもよい.

ただし,この問題においての経路の長さは辺の長さの単純な和ではなく11 本目に使う辺の長さを 11 倍,22 本目に使う辺の長さを 22 倍,33 本目に使う辺の長さを 44 倍,...... したものの和とします. (より厳密には,長さ L1,...,LkL_1,...,L_k の辺をこの順に使ったとすると,その経路の長さは Litimes2i1L_i \\times 2^{i-1} の和です.)

制約

  • 1leqN,M,Qleq500001 \\leq N,M,Q \\leq 50000
  • 3leqMODleq1063 \\leq MOD \\leq 10^{6}
  • MODMOD は奇数
  • 1leqAi,BileqN1 \\leq A_i,B_i\\leq N
  • 0leqCileqMOD10 \\leq C_i \\leq MOD-1
  • 1leqSi,TileqN1 \\leq S_i,T_i \\leq N
  • 0leqRileqMOD10 \\leq R_i \\leq MOD-1
  • 与えられるグラフは連結 (ただし自己辺や多重辺を含むことがある)

入力

入力は以下の形式で標準入力から与えられる.

NN MM QQ MODMOD A1A_1 B1B_1 C1C_1 vdots\\vdots AMA_M BMB_M CMC_M S1S_1 T1T_1 R1R_1 vdots\\vdots SQS_Q TQT_Q RQR_Q

出力

ii 行目に,ii 番目のクエリに対する答えを出力せよ.


入力例 1

3 2 2 2019
1 2 1
2 3 2
1 3 5
1 3 4

出力例 1

YES
NO

各クエリに対する答えは以下のようになります.

  • 11 番目のクエリ: 頂点 1,2,31,2,3 の順に進むと経路の長さは 1times20+2times21=51 \\times 2^0 + 2 \\times 2^1 = 5 となり,長さを 20192019 で割った余りが 55 になる経路は存在するので,答えは YES である.
  • 22 番目のクエリ: どのように頂点 11 から頂点 33 まで進んでも経路の長さを 20192019 で割った余りが 44 となることはないので,答えは NO である.

入力例 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

出力例 2

YES
NO
NO

入力例 3

1 2 3 25
1 1 1
1 1 2
1 1 13
1 1 6
1 1 14

出力例 3

YES
YES
YES

入力例 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

出力例 4

YES
NO
NO
NO
NO
NO
NO
YES
YES
NO