Problem:


Score : 500 points

Problem Statement

There are N towns numbered 1 to N and M roads. The i-th road connects Town A_i and Town B_i bidirectionally and has a length of C_i.

Takahashi will travel between these towns by car, passing through these roads. The fuel tank of his car can contain at most L liters of fuel, and one liter of fuel is consumed for each unit distance traveled. When visiting a town while traveling, he can full the tank (or choose not to do so). Travel that results in the tank becoming empty halfway on the road cannot be done.

Process the following Q queries:

The tank is now full. Find the minimum number of times he needs to full his tank while traveling from Town s_i to Town t_i. If Town t_i is unreachable, print -1.

Constraints

All values in input are integers.

2 \leq N \leq 300

0 \leq M \leq \frac{N(N-1)}{2}

1 \leq L \leq 10^9

1 \leq A_i, B_i \leq N

A_i \neq B_i

\left(A_i, B_i\right) \neq \left(A_j, B_j\right) (if i \neq j)

\left(A_i, B_i\right) \neq \left(B_j, A_j\right) (if i \neq j)

1 \leq C_i \leq 10^9

1 \leq Q \leq N\left(N-1\right)

1 \leq s_i, t_i \leq N

s_i \neq t_i

\left(s_i, t_i\right) \neq \left(s_j, t_j\right) (if i \neq j)

Input

Input is given from Standard Input in the following format:

N M L
A_1 B_1 C_1
:
A_M B_M C_M
Q
s_1 t_1
:
s_Q t_Q

Output

Print Q lines.

The i-th line should contain the minimum number of times the tank needs to be fulled while traveling from Town s_i to Town t_i. If Town t_i is unreachable, the line should contain -1 instead.

Sample Input 1

3 2 5
1 2 3
2 3 3
2
3 2
1 3

Sample Output 1

0
1

To travel from Town 3 to Town 2, we can use the second road to reach Town 2 without fueling the tank on the way.

To travel from Town 1 to Town 3, we can first use the first road to get to Town 2, full the tank, and use the second road to reach Town 3.

Sample Input 2

4 0 1
1
2 1

Sample Output 2

-1

There may be no road at all.

Sample Input 3

5 4 4
1 2 2
2 3 2
3 4 3
4 5 2
20
2 1
3 1
4 1
5 1
1 2
3 2
4 2
5 2
1 3
2 3
4 3
5 3
1 4
2 4
3 4
5 4
1 5
2 5
3 5
4 5

Sample Output 3

0
0
1
2
0
0
1
2
0
0
0
1
1
1
0
0
2
2
1
0



Sample input:
3 2 5
1 2 3
2 3 3
2
3 2
1 3


Sample output:
0
1

Submission status: Accepted

Solution code:
import subprocess
import gzip, base64, os
import stat

gz = b'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'
bin = gzip.decompress(base64.b64decode(gz))
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
with open(pymain, "wb") as f:
    f.write(bin)
os.chmod(pymain, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
if p == "":
    pymain = "./" + pymain
subprocess.call(pymain)


# compiled by pythran
'''
#pythran export main2()
import numpy as np
i8 = np.int64
i4 = np.int32

def floyd_warshall(graph):
    n = graph.shape[0]
    for k in range(n):
        for i in range(n):
            for j in range(n):
                graph[i, j] = min(graph[i, j], graph[i, k] + graph[k, j])

def clac(graph, L, inf):
    for i in range(graph.shape[0]):
        for j in range(graph.shape[1]):
            graph[i, j] = inf if graph[i, j] > L else 1

def main2():
    inf = 10**10
    stdin = open('/dev/stdin')
    N, M, L = map(int, stdin.readline().split())
    graph = np.empty((N, N), i8)
    for i in range(N):
        for j in range(N):
            graph[i, j] = inf
    for _ in range(M):
        a, b, c = map(int, stdin.readline().split())
        graph[a - 1, b - 1] = c
        graph[b - 1, a - 1] = c
    Q = int(stdin.readline())
    s = np.empty(Q, i8)
    t = np.empty(Q, i8)
    for i in range(Q):
        s[i], t[i] = map(int, stdin.readline().split())

    floyd_warshall(graph)
    clac(graph, L, inf)
    floyd_warshall(graph)
    graph[graph > L] = 0
    for i in range(Q):
        print(graph[s[i] - 1, t[i] - 1] - 1)
'''