#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vec;
typedef vector<vec> mat;
typedef pair<ll,ll> pll;
const ll mod=1e9+7;
//const ll mod=998244353;
const ll inf=5e15;

int main() {
  ll n,m,l;
  cin >> n >> m >> l;
  mat dis(n,vec(n,inf));
  for(ll i=0;i<n;i++) dis[i][i]=0;
  for(ll i=0;i<m;i++) {
    ll a,b,c;
    cin >> a >> b >> c;
    a--;
    b--;
    if(c<=l) dis[a][b]=dis[b][a]=c;
  }
  for(ll k=0;k<n;k++) {
    for(ll i=0;i<n;i++) {
      for(ll j=0;j<n;j++) {
        dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
      }
    }
  }
  for(ll i=0;i<n;i++) {
    for(ll j=0;j<n;j++) {
      if(dis[i][j]<=l) dis[i][j]=min(1LL,dis[i][j]);
    }
  }
  for(ll k=0;k<n;k++) {
    for(ll i=0;i<n;i++) {
      for(ll j=0;j<n;j++) {
        dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
      }
    }
  }
  ll q;
  cin >> q;
  while(q--) {
    ll s,t;
    cin >> s >> t;
    s--;
    t--;
    if(dis[s][t]==inf) cout << -1 << endl;
    else cout << dis[s][t]-1 << endl;
  }
}