// 笨蛋出题人 DS 放 T4 不说，那我肯定先写 T4 了呀。
// 注意到扩大区间长度一定不优，我们只可能求长度为 k 的区间的答案。
// 注意到算 lca 其实就是把 dfn 最小的和最大的拉进来求一个 lca 。
// 我们得到了一个 O(q * (len - k)) 的做法。  

#include <bits/stdc++.h>
#define il inline
using namespace std;
const int N = 5e5 + 3;
const int LOG = 21;
int n, q;
basic_string<int> G[N];
int dfn[N], dn, dep[N], top[N], siz[N], son[N], fa[N];
void dfs1(int u, int Fa) {
	fa[u] = Fa, dep[u] = dep[Fa] + 1, siz[u] = 1;
	for (int v : G[u]) if (v != Fa) {
		dfs1(v, u);
		siz[u] += siz[v];
		if (siz[v] > siz[son[u]]) son[u] = v;
	}
}
void dfs2(int u, int Top) {
	dfn[u] = ++dn, top[u] = Top;
	if (son[u]) dfs2(son[u], Top);
	for (int v : G[u]) if (!dfn[v]) dfs2(v, v);
}
il int get_lca(int u, int v) {
	while (top[u] != top[v]) {
		if (dep[top[u]] < dep[top[v]]) swap(u, v);
		u = fa[top[u]];
	}
	return dep[u] < dep[v] ? u : v;
}
il int get_min(int u, int v) { return dfn[u] < dfn[v] ? u : v; }
il int get_max(int u, int v) { return dfn[u] > dfn[v] ? u : v; }
int mi[LOG][N], mx[LOG][N];
il void st_init() {
	for (int i = 1; i <= n; i++) mi[0][i] = mx[0][i] = i;
	for (int k = 1; (1 << k) <= n; k++)
		for (int i = 1; i + (1 << k) - 1 <= n; i++)
			mi[k][i] = get_min(mi[k - 1][i], mi[k - 1][i + (1 << k - 1)]),
			mx[k][i] = get_max(mx[k - 1][i], mx[k - 1][i + (1 << k - 1)]);
}
il int q_min(int l, int r) {
	int k = __lg(r - l + 1);
	return get_min(mi[k][l], mi[k][r - (1 << k) + 1]);
}
il int q_max(int l, int r) {
	int k = __lg(r - l + 1);
	return get_max(mx[k][l], mx[k][r - (1 << k) + 1]);
}
signed main() {
	freopen("query.in", "r", stdin);
	freopen("query.out", "w", stdout);
	ios::sync_with_stdio(false), cin.tie(nullptr);
	cin >> n;
	for (int i = 1, u, v; i <= n - 1; i++) cin >> u >> v, G[u].push_back(v), G[v].push_back(u);
	dfs1(1, 1), dfs2(1, 1);
	st_init();
	cin >> q;
	while (q--) {
		int l, r, k; cin >> l >> r >> k;
		int ans = 0;
		for (int i = l; i <= r - k + 1; i++) {
			int x = q_min(i, i + k - 1), y = q_max(i, i + k - 1);
			int lca = get_lca(x, y);
			ans = max(ans, dep[lca]);
//			cerr << ": " << x << ' ' << y << ' ' << lca << '\n';
		}
		cout << ans << '\n';
	}
	return 0;
}
