#include <bits/stdc++.h>
using namespace std;

int main(){
int N, M, L, Q; cin >> N >> M >> L;
int A[M], B[M], C[M];
for(int i=0; i<M; i++){ cin >> A[i] >> B[i] >> C[i]; }
cin >> Q; int s[Q], t[Q];
for(int i=0; i<Q; i++){ cin >> s[i] >> t[i]; }

unsigned long d[N][N], INF=1000000000000;
for(int i=0; i<N; i++){ for(int j=0; j<N; j++){ d[i][j]=(i==j)?0:INF; }}
for(int i=0; i<M; i++){ d[A[i]-1][B[i]-1]=d[B[i]-1][A[i]-1]=C[i]; } 
for(int k=0; k<N; k++){ for(int i=0; i<N; i++){ for(int j=0; j<N; j++){
  d[i][j]=min(d[i][j], d[i][k]+d[k][j]);
}}}

int ans[N][N];
for(int i=0; i<N; i++){
  ans[i][i]=0;
  for(int j=i+1; j<N; j++){ ans[i][j]=ans[j][i]=(d[i][j]<=L)?1:N; }
}
for(int k=0; k<N; k++){ for(int i=0; i<N; i++){ for(int j=0; j<N; j++){
  ans[i][j]=min(ans[i][j], ans[i][k]+ans[k][j]);
}}}
for(int i=0, l=0; i<Q; i++){
  l=(ans[s[i]-1][t[i]-1]<N)?ans[s[i]-1][t[i]-1]-1:-1;
  cout << l << "\n"; }
}