#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int>> adj[100001];
vector<pair<int, int>> quer[100001];
int ans[100001];
vector<int> path;
void dfs(int u, int p, int t) {
for (auto vp : adj[u]) {
if (vp.first != p) {
path.push_back(t + vp.second);
dfs(vp.first, u, t + vp.second);
path.pop_back();
}
}
for (auto q: quer[u]) {
int s = 0, e = path.size() - 1;
while (s < e) {
int m = (s + e + 1) / 2;
if (path[m] <= q.first) {
s = m;
} else {
e = m - 1;
}
}
ans[q.second] = s + 1;
}
}
int main() {
int n; cin >> n;
for (int i = 0; i < n; ++i) {
int u, v, w; cin >> u >> v >> w;
adj[u].push_back({v, w});
adj[v].push_back({u, w});
}
int q; cin >> q;
for (int i = 0; i < q; ++i) {
int u, d;
cin >> u >> d;
quer[u].push_back({d, i});
}
path.push_back(0);
dfs(0, 0, 0);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8cGFpcjxpbnQsIGludD4+IGFkalsxMDAwMDFdOwp2ZWN0b3I8cGFpcjxpbnQsIGludD4+IHF1ZXJbMTAwMDAxXTsKaW50IGFuc1sxMDAwMDFdOwp2ZWN0b3I8aW50PiBwYXRoOwoKdm9pZCBkZnMoaW50IHUsIGludCBwLCBpbnQgdCkgewoJZm9yIChhdXRvIHZwIDogYWRqW3VdKSB7CgkJaWYgKHZwLmZpcnN0ICE9IHApIHsKCQkJcGF0aC5wdXNoX2JhY2sodCArIHZwLnNlY29uZCk7CgkJCWRmcyh2cC5maXJzdCwgdSwgdCArIHZwLnNlY29uZCk7CgkJCXBhdGgucG9wX2JhY2soKTsKCQl9Cgl9Cglmb3IgKGF1dG8gcTogcXVlclt1XSkgewoJCWludCBzID0gMCwgZSA9IHBhdGguc2l6ZSgpIC0gMTsKCQl3aGlsZSAocyA8IGUpIHsKCQkJaW50IG0gPSAocyArIGUgKyAxKSAvIDI7CgkJCWlmIChwYXRoW21dIDw9IHEuZmlyc3QpIHsKCQkJCXMgPSBtOwoJCQl9IGVsc2UgewoJCQkJZSA9IG0gLSAxOwoJCQl9CgkJfQoJCWFuc1txLnNlY29uZF0gPSBzICsgMTsKCX0KfQoKaW50IG1haW4oKSB7CglpbnQgbjsgY2luID4+IG47Cglmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewoJCWludCB1LCB2LCB3OyBjaW4gPj4gdSA+PiB2ID4+IHc7CgkJYWRqW3VdLnB1c2hfYmFjayh7diwgd30pOwoJCWFkalt2XS5wdXNoX2JhY2soe3UsIHd9KTsKCX0KCWludCBxOyBjaW4gPj4gcTsKCWZvciAoaW50IGkgPSAwOyBpIDwgcTsgKytpKSB7CgkJaW50IHUsIGQ7CgkJY2luID4+IHUgPj4gZDsKCQlxdWVyW3VdLnB1c2hfYmFjayh7ZCwgaX0pOwoJfQoJcGF0aC5wdXNoX2JhY2soMCk7CglkZnMoMCwgMCwgMCk7CglyZXR1cm4gMDsKfQ==