#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
int main(){
  const ll INF=1e18;
  int n,m,l,i,j,k;
  cin >> n >> m >> l;
  ll dp[310][310],dp1[310][310];
  for(i=0;i<n;i++){
    for(j=0;j<n;j++){
      dp[i][j]=INF,dp1[i][j]=INF;
    }
  }
  for(i=0;i<m;i++){
    int a,b,c;
    cin >> a >> b >> c;
    a--,b--;
    dp[a][b]=c,dp[b][a]=c;
  }
  for(k=0;k<n;k++){
    for(i=0;i<n;i++){
      for(j=0;j<n;j++){
        dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
      }
    }
  }
  for(i=0;i<n;i++){
    for(j=0;j<n;j++){
      if(dp[i][j]<=l){
        dp1[i][j]=1;
      }
    }
  }
  for(k=0;k<n;k++){
    for(i=0;i<n;i++){
      for(j=0;j<n;j++){
        dp1[i][j]=min(dp1[i][j],dp1[i][k]+dp1[k][j]);
      }
    }
  }
  int q;
  cin >> q;
  for(i=0;i<q;i++){
    int s,t;
    cin >> s >> t;
    s--,t--;
    if(dp1[s][t]==INF){
      cout << -1 << endl;
    }
    else{
      cout << dp1[s][t]-1 << endl;
    }
  }
}