#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll d[310][310];
int n,m,l;
void init()
{
	cin>>n>>m>>l;
	for(int i=1;i<=301;i++)
	{
		for(int j=1;j<=301;j++)
		{
			d[i][j]=1e16;
		}
	}
	for(int i=1;i<=n;i++)
	{
		d[i][i]=0;
	}
	for(int i=1;i<=m;i++)
	{
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		d[x][y]=min(d[x][y],(ll)z);
		d[y][x]=min(d[y][x],(ll)z);
	}
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(i==j)
				d[i][i]=0;
			else if(d[i][j]<=l)
				d[i][j]=1;
			else 
				d[i][j]=(ll)1e16;
		}
	}
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
			}
		}
	}
}

int main()
{
	init();
	int T;
	cin>>T;
	while(T--)
	{
		int s,t,ans;
		scanf("%d%d",&s,&t);
		if(d[s][t]==(ll)1e16)
			cout<<"-1\n";
		else
			cout<<d[s][t]-1<<"\n";
	}
	return 0;	
}