#include using namespace std; #include using namespace atcoder; int main() { int N, M; cin >> N >> M; vector U(M), V(M), L(M); for(int i = 0; i < M; ++i) cin >> U[i] >> V[i] >> L[i], --U[i], --V[i]; int Q; cin >> Q; vector P(Q), T(Q); for(int i = 0; i < Q; ++i) cin >> P[i] >> T[i], --T[i]; vector> que(M + Q); for(int i = 0; i < M; ++i) que[i] = {L[i], 0, i}; for(int i = 0; i < Q; ++i) que[M + i] = {P[i], 1, i}; sort(que.begin(), que.end()); dsu uf(N); vector ans(Q); for(auto [_, cmd, i] : que) { if(cmd == 0) uf.merge(U[i], V[i]); if(cmd == 1) ans[i] = uf.size(T[i]); } for(auto x : ans) cout << x << "\n"; }