#include<bits/stdc++.h>
using namespace std;
long long s[305][305];
const int INF=0x3f3f3f3f;
int main()
{
	int n,m,l;
	cin >> n >>m >>l;
	int a,b,c;
	memset(s,0x3f,sizeof(s));
	for(int i=0;i<m;i++){
		cin >> a>> b >> c;
		s[a][b] = c;
		s[b][a] = c;
	}
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++) 
		   	for(int j=1;j<=n;j++) 	
			   if(s[i][j]>s[i][k]+s[k][j]) {
			   		s[i][j]=s[i][k]+s[k][j] ;
			   }
//	for(int i=1;i<=n;i++) {
//		for(int j=1;j<=n;j++) 
//			cout <<s[i][j] <<" ";
//		cout << endl;
//	}
	for(int i=1;i<=n;i++) 
		for(int j=1;j<=n;j++)
			s[i][j]=s[i][j]<=l?1:INF;
	
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++) 
		   	for(int j=1;j<=n;j++) 	
			   if(s[i][j]>s[i][k]+s[k][j]) {
			   		s[i][j]=s[i][k]+s[k][j] ;
			   }
	int q;
	cin >> q;
	for(int i=0;i<q;i++) {
		cin >> a >> b;
		cout << ((s[a][b]==INF)?-1:s[a][b]-1)<<endl;
	}
	return 0;
}

