#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=305;
ll dis[maxn][maxn];
ll s_dis[maxn][maxn];
const int inf=1e18;
int main()
{
	int n,m,l;cin>>n>>m>>l;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			s_dis[i][j]=inf;dis[i][j]=inf;
		}
	}
	for(int i=1;i<=m;i++)
	{
		int x,y,w;scanf("%d%d%d",&x,&y,&w);
		s_dis[x][y]=w;
		s_dis[y][x]=w;
	}
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(i==j) continue;
				s_dis[i][j]=min(s_dis[i][j],s_dis[i][k]+s_dis[k][j]);
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(s_dis[i][j]<=l) dis[i][j]=1;
		}
	}
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(i==j) continue;
				dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
			}
		}
	}
	int q;scanf("%d",&q);
	while(q--)
	{
		int x,y;scanf("%d%d",&x,&y);
		if(dis[x][y]!=inf)
		printf("%lld\n",dis[x][y]-1);
		else puts("-1"); 
	}
 } 