
#include <bits/stdc++.h>
using namespace std;

const int N=5e5+5;
int n,head[N],q,cnt,depth[N];

struct Edge{
	int to,nxt;
}edge[N];

void add(int u,int v){
	edge[cnt].to=v;
	edge[cnt].nxt=head[u];
	head[u]=cnt++;
}

void dfs(int u,int d){
	depth[u]=d;
	for(int i=head[u];~i;i=edge[i].nxt){
		if(depth[edge[i].to]) continue;
		dfs(edge[i].to,d+1);
	}
}

int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++) head[i]=-1;
	int u,v;
	for(int i=1;i<n;i++){
		scanf("%d%d",&u,&v);
		add(u,v);
		add(v,u);
	}
	dfs(1,1);
	scanf("%d",&q);
	int l,r,k;
	while(q--){
		scanf("%d%d%d",&l,&r,&k);
		sort(depth+l,depth+r+1);
		printf("%d\n",depth[r-k+1]);
	}
}
