#include<cstdio>
#include<iostream>
using namespace std;
#define Maxn (int)(1e6+10)
#define inf 0x7fffffff
struct tree{
	int son,id;
}t[Maxn];
int tex[Maxn];
void dfn(int x,int d){
	t[x].id=d;
	if(x!=1&&tex[x]==1) return;
	dfn(t[x].son,d+1);
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	int n,q;
	cin>>n;
	for(int i=1;i<=n-1;i++){
		int u,v;
		cin>>u>>v;
		t[u].son=v;
		tex[u]++;
		tex[v]++;
	}
	//¸ù½Úµã±àºÅÎª1
	t[1].id=1;
	dfn(1,1); 
	cin>>q;
	//for(int i=1;i<=n;i++) printf("%d",t[i].id);
	for(int i=1;i<=q;i++){
		int l,r,k;
		cin>>l>>r>>k;
		int ans=-1;
		for(int j=l;j<=r-k+1;j++){
			int res=inf;
			for(int p=j;p<=j+k-1;p++){
				res=min(res,t[p].id);
			}
			ans=max(res,ans); 
		}
		printf("%d\n",ans);
	}
	return 0;
}
