#include<bits/stdc++.h>
using namespace std;
const int M=5e5+10;
int n,q;
vector<int>G[M];
int d[M];
void add(int u,int v){
	G[u].push_back(v);
	d[u]++;
}
int dep[M],dfn[M],tot=0,sz[M],son[M],top[M],id[M],fa[M];
void init(int u,int f){
	dep[u]=dep[f]+1,fa[u]=f,sz[u]=1;
	dfn[u]=++tot;
	for(int v:G[u]){
		if(v==f)continue;
		init(v,u);
		sz[u]+=sz[v];
		if(sz[v]>sz[son[u]])son[u]=v;
	}
}
void dfs2(int u,int t){
	top[u]=t;
	id[u]=++tot;
	if(son[u])dfs2(son[u],t);
	for(int v:G[u]){
		if(v==fa[u]||v==son[u])continue;
		dfs2(v,v);
	}
}
bool check(){
	for(int i=1;i<=n;i++)if(d[i]>2)return false;
	return true;
}
int LCA(int x,int y){
	while(top[x]!=top[y]){
		if(dep[top[x]]<dep[top[y]])swap(x,y);
		x=fa[top[x]];
	}
	if(dep[x]>dep[y])swap(x,y);
	return x;
}
signed 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 i=1;i<n;i++){
		int u,v;cin>>u>>v;
		add(u,v),add(v,u);
	}
	cin>>q;
	init(1,0);
//	cerr<<"init\n";
	tot=0;
	dfs2(1,1);
//	cerr<<"dfs\n"; 
	for(int i=1;i<=q;i++){
		int l,r,k;cin>>l>>r>>k;
		int ans=0;
		for(int j=l;j<=r-k+1;j++){
			int nn=j;
			for(int t=j+1;t<=j+k-1;t++){
				nn=LCA(nn,t);
			}
			ans=max(ans,dep[nn]);
		}
		cout<<ans<<endl;
	}
	return 0;
} 
