#include<bits/stdc++.h>
using namespace std;
vector<int>G[500001];
int n,fa[500001][20],dep[500001];
void dfs(int u,int fa){
	::fa[u][0]=fa;
	dep[u]=dep[fa]+1;
	for(int j=1;(1<<j)<=dep[u];j++)
		::fa[u][j]=::fa[::fa[u][j-1]][j-1];
	for(int v:G[u])if(v!=fa)dfs(v,u);
}
int lca(int u,int v){
	if(dep[u]<dep[v])swap(u,v);
	if(dep[u]!=dep[v])
		for(int j=19;j>=0;j--)
			if(dep[fa[u][j]]>=dep[v])u=fa[u][j];
	if(u==v)return u;
	for(int j=19;j>=0;j--)
		if(fa[u][j]!=fa[v][j])
			u=fa[u][j],v=fa[v][j];
	return fa[u][0];
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n;
	for(int u,v,i=1;i<n;i++){
		cin>>u>>v;
		G[u].emplace_back(v);
		G[v].emplace_back(u);
	}dfs(1,0);
	int q;
	cin>>q;
	for(int l,r,k;q--;){
		cin>>l>>r>>k;
		int ans=0;
		for(int i=l;i<=r;i++){
			int LCA=i;
			if(r-i+1<k)break;
			for(int j=i;j<=i+k-1;j++){
				LCA=lca(LCA,j); 
				if(j-i+1>=k)
					ans=max(ans,dep[LCA]);
			}
		}cout<<ans<<'\n';
	}
	return 0;
} 
