#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,q,head[N],t,b[N],cnt,d[N];
struct edge
{
	int v,nxt;
}e[N];
void add(int u,int v)
{
	e[++t]={v,head[u]};
	head[u]=t;
}
void dfs(int u)
{
	for(int i=head[u];i;i=e[i].nxt)
	{
		int v=e[i].v;
		if(!d[v])d[v]=d[u]+1,dfs(v);
	}
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<n;i++)
	{
		int u,v;
		scanf("%d%d",&u,&v);
		d[v]=d[u]+1;
	}
	d[1]=1;
	dfs(1);
	scanf("%d",&q);
	for(int i=1;i<=q;i++)
	{
		int l,r,k;
		scanf("%d%d%d",&l,&r,&k);
		for(int j=l;j<=r;j++)
			b[++cnt]=d[j];
		sort(b+1,b+cnt+1,greater<int>());
		printf("%d\n",b[k]);
		cnt=0;
	}
	return 0;
}
