require "numo/narray"
include Numo

n, m, l = gets.to_s.split.map{|t|t.to_i}
inf = 10 ** 16
d = Int64.ones(n, n) * inf
m.times do 
  a, b, c = gets.to_s.split
  a, b, c = a.to_i - 1, b.to_i - 1, c.to_i
  d[a,b] = d[b,a] = c
end

n.times do |k|
  n.times do |i|
    n.times do |j|
      d[i,j] = d[i,k] + d[k,j] if d[i,j] > d[i,k] + d[k,j]
    end
  end
end

n.times do |k|
  n.times do |i|
    n.times do |j|
      d[i,j] = 1 if d[i,j] <= l
    end
  end
end

n.times do |k|
  n.times do |i|
    n.times do |j|
      d[i,j] = d[i,k] + d[k,j] if d[i,j] > d[i,k] + d[k,j]
    end
  end
end

q = gets.to_s.to_i
q.times do
  s, t = gets.to_s.split
  s, t = s.to_i - 1, t.to_i - 1
  puts d[s,t] > l ? -1 : d[s,t] - 1
end