만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

불가사의한 버튼

시간 제한8초메모리 제한512 MB

요약
1번 방에서 시작해 d번 방의 탈출 버튼으로 끝나고 정확히 e개의 코인을 모으는 버튼 누르기 방법의 수를 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 행렬, 그래프
정답자
아직 제출이 없습니다

문제

당신은 마을 외곽에 있는 던전에서 코인을 벌기로 했다. 이 던전에는 1부터 NN까지 번호가 붙은 NN개의 방이 있다. 던전에는 “코인 버튼”, “탈출 버튼”, “워프 버튼”이라 불리는 신기한 버튼이 있다.

  • 코인 버튼은 각 방에 정확히 1개씩 있다. 코인 버튼은 몇 번이고 누를 수 있으며, 누를 때마다 코인을 1개 얻는다.
  • 탈출 버튼은 각 방에 정확히 1개씩 있다. 탈출 버튼을 누르면 즉시 던전에서 탈출하고 모험이 끝난다.
  • 워프 버튼은 총 MM개 있다. ii번째 워프 버튼은 방 aia_i에 있다. 이 버튼을 누르면 방 bib_i로 워프하고 코인을 cic_i개 얻는다. 단, ai<bia_i < b_i이고 1≤ci≤31 \le c_i \le 3이다. 한 방에 워프 버튼이 여러 개 있을 수도 있고, 워프 버튼이 하나도 없는 방도 있다.

버튼을 누르는 것 외에는 방을 이동할 수 없으며, 버튼을 동시에 여러 개 누를 수도 없다. 모든 버튼은 서로 구별할 수 있다.

당신은 이 던전을 QQ번 모험했다. 기억이 맞다면 jj번째 모험은 방 1에서 시작해서, 마지막으로 방 djd_j에 있는 탈출 버튼을 눌렀고, 코인을 정확히 eje_j개 얻었다. 각 모험에 대해 이러한 버튼 누르는 방법이 몇 가지인지 구하라. 답이 클 수 있으므로 109+710^9+7로 나눈 나머지를 구하라.

두 가지 버튼 누르는 방법이 다르다는 것은, 누른 버튼의 총 횟수가 다르거나, 어떤 정수 kk가 존재하여 kk번째로 누른 버튼이 서로 다른 경우를 말한다.

기억이 잘못되었을 수도 있으며, 그런 방법이 존재하지 않을 수도 있다. 그 경우에는 0을 출력하라.

입력

입력은 여러 데이터셋으로 이루어진다. 각 데이터셋은 다음 형식으로 주어진다.

N M
a1 b1 c1
a2 b2 c2
...
aM bM cM
Q
d1 e1
d2 e2
...
dQ eQ

첫 줄에는 NN과 MM이 주어지며, 1≤N,M≤20001 \le N, M \le 2000을 만족한다. 이어지는 MM개 줄에는 워프 버튼 정보가 주어지는데, ii번째 줄에는 aia_i, bib_i, cic_i가 주어진다. 여기서 1≤ai<bi≤N1 \le a_i < b_i \le N이고 1≤ci≤31 \le c_i \le 3이다. M+2M+2번째 줄에는 QQ가 주어지며, 1≤Q≤20001 \le Q \le 2000을 만족한다. 이어지는 QQ개 줄에는 djd_j와 eje_j가 주어지며, 1≤dj≤N1 \le d_j \le N이고 1≤ej≤1091 \le e_j \le 10^9이다.

입력의 끝은 0 두 개로만 이루어진 줄이다. 데이터셋은 모두 50개를 넘지 않는다.

출력

각 데이터셋에 대해 QQ줄을 출력한다. jj번째 줄에는 방 1에서 시작해 마지막으로 방 djd_j에 있는 탈출 버튼을 눌러, 코인을 정확히 eje_j개 얻는 버튼 누르는 방법의 총 개수를 109+710^9+7로 나눈 나머지로 출력한다.

예제1

  1. 예제 1

    입력
    4 9
    1 2 1
    1 2 2
    1 3 1
    1 3 2
    1 3 3
    2 3 1
    2 3 2
    1 4 1
    3 4 2
    8
    1 5
    2 5
    3 5
    4 5
    1 1234567
    2 1234567
    3 1234567
    4 1234567
    4 8
    1 2 1
    1 2 1
    1 2 3
    3 4 3
    1 4 2
    2 4 1
    2 4 3
    2 4 3
    8
    1 3
    2 6
    3 8
    4 12
    1 31415926
    2 53589793
    3 23846
    4 26433832
    0 0
    
    예상 출력
    1
    9
    37
    21
    1
    2469133
    307629943
    60012504
    1
    16
    0
    424
    1
    160769377
    0
    43581113