#include<bits/stdc++.h>
#define maxn 500005
using namespace std;
int lg[maxn],dep[maxn],fa[23][maxn],n,m[maxn]; 
bool b1=false;
vector<int> e[maxn];
void add(int u,int v){
	e[u].push_back(v);
	e[v].push_back(u);
}
void dfs(int x,int f){
	int num=e[x].size();
	dep[x]=dep[f]+1;
	if(dep[x]==n)b1=true;
	fa[0][x]=f;
	for(int i=1;i<=lg[dep[x]];i++){
		fa[i][x]=fa[i-1][fa[i-1][x]];
	}
	for(int i=0;i<num;i++){
		if(e[x][i]!=f)dfs(e[x][i],x);
	}
}
int lca(int x,int y){
	if(dep[x]<dep[y])swap(x,y);
	while(dep[x]>dep[y]){
		x=fa[lg[dep[x]-dep[y]]][x];
	}
	if(x==y)return x;
	while(fa[0][x]!=fa[0][y])
		if(fa[lg[dep[x]]][x]!=fa[lg[dep[x]]][y])x=fa[lg[dep[x]]][x],y=fa[lg[dep[x]]][y];
	return fa[0][x];
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n-1;i++){
		int u,v;
		scanf("%d%d",&u,&v);
		add(u,v);
	}
	dfs(1,0);
	for(int i=2;i<=n;i++)lg[i]=lg[i-1]+(lg[i-1]==lg[i>>1]);
	int q;
	scanf("%d",&q);
	while(q--){
	    int l,r,k,ans=0;
	    scanf("%d%d%d",&l,&r,&k);
	    if(b1){
	        for(int i=l;i<=r-k+1;i++){
	        	
			}	
		}
	    for(int i=l;i<=r-k+1;i++){
	    	ans=max(dep[lca(i,i+k-1)],ans);
		}
		cout<<ans<<endl;
	}
	return 0;
}
