#include <iostream>
#include <cstdio>
#include <cstring>
#define N 305
using namespace std;

int n, m, l, q, d[N][N];

void f() {
	int i, j, k;
	for(k=1; k<=n; k++) for(i=1; i<=n; i++) for(j=1; j<=n; j++) {
		d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
	}
}

int main() {
	int i, j, u, v, w;
	memset(d, 0x3f, sizeof(d));
	cin >> n >> m >> l;
	while(m--) {
		scanf("%d%d%d", &u, &v, &w);
		d[u][v] = d[v][u] = w;
	}
	f();
	for(i=1; i<=n; i++) for(j=1; j<=n; j++) d[i][j] = d[i][j]<=l ? 1 : 1e9;
	f();
	cin >> q;
	while(q--) {
		scanf("%d%d", &u, &v);
		printf("%d\n", d[u][v]<1e9 ? d[u][v]-1 : -1);
	}
	return 0;
}