#include<bits/stdc++.h>
using namespace std;
const int maxn=500010;
vector<int>e[maxn],r[maxn];
int deep[maxn],fa[maxn],a[maxn],cnt,n,st[maxn][20];
void dfs(int u){
	for(int v:e[u]){
		if(v==fa[u]) continue;
		fa[v]=u;
		deep[v]=deep[u]+1;
		r[u].push_back(v);
		dfs(v);
	}
}
void ddfs(int u){
	a[++cnt]=u;
	for(int v:r[u]) ddfs(v);
}
bool pd(int u,int l,int r,int k){
	cnt=0;
	ddfs(u);
	sort(a+1,a+1+cnt);
	int g=0,maxx=0;
	for(int i=1;i<=cnt;i++){
		if(!(a[i]>=l&&a[i]<=r)) continue;
		if(a[i]==a[i-1]+1) g++;
		else g=1;
		maxx=max(maxx,g);
	}
	return maxx>=k;
}
bool chack(int u,int l,int r,int k){
	for(int i=1;i<=n;i++) if(deep[i]==u) if(pd(i,l,r,k)) return 1;
	return 0;
}
signed main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	deep[1]=1;
	scanf("%d",&n);
	for(int i=1;i<n;i++){
		int u,v;
		scanf("%d%d",&u,&v);
		e[u].push_back(v);
		e[v].push_back(u);
	}
	dfs(1);
	int q;
	scanf("%d",&q);
//	if(n<=5000){
	if(1+1==2){
		for(int i=1;i<=q;i++){
			int l,r,k;
			scanf("%d%d%d",&l,&r,&k);
			int ll=1,rr=n,ans=1;
			while(ll<=rr){
				int mid=(ll+rr)/2;
				if(chack(mid,l,r,k)) ll=mid+1,ans=mid;
				else rr=mid-1;
			}
			printf("%d\n",ans);
		}
		return 0;
	}
	for(int i=1;i<=n;i++) st[i][0]=deep[i];
	return 0;
}
