#include<bits/stdc++.h>
using namespace std;
int n,q,dep[500005],f[500005][20],ru[500005],tmp;
vector<int>e[500005];
void dfs(int u,int fa){
	f[u][0]=fa;
	dep[u]=dep[fa]+1;
	for(int i=1;i<=19;i++){
		f[u][i]=f[f[u][i-1]][i-1];
	}
	for(int j=0;j<e[u].size();j++){
		int v=e[u][j];
		if(v!=fa){
			dfs(v,u);
		}
	}
}
int lca(int x,int y){
	if(dep[x]<dep[y])swap(x,y);
	for(int i=19;i>=0;i--){
		if(dep[f[x][i]]>=dep[y])x=f[x][i];
	}
	if(x==y)return x;
	for(int i=19;i>=0;i--){
		if(f[x][i]!=f[y][i]){
			x=f[x][i];
			y=f[y][i];
		}
	}
	return f[x][0];
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	cin>>n;
	for(int i=1;i<n;i++){
		int u,v;
		cin>>u>>v;
		e[u].push_back(v);
		e[v].push_back(u);
	}
	dfs(1,0);
	cin>>q;
	while(q--){
		int l,r,k;
		cin>>l>>r>>k;
		int ans=1;
		for(int i=l;i+k-1<=r;i++){
			int ll=i,rr=i+k-1;
			int tmpans=ll;
			for(int j=ll+1;j<=rr;j++){
				int ancestor=lca(ll,j);
				if(dep[ancestor]<dep[tmpans])tmpans=ancestor;
			}
			if(dep[tmpans]>dep[ans])ans=tmpans;
		} 
		cout<<dep[ans]<<endl;
	}
	return 0;
}
