#include<bits/stdc++.h>
using namespace std;
int n,tot,q,root,maxn,l,r,k,id;
int head[500005],dis[500005],deep[500005];
int f[500005][30];
struct pp
{
	int q,z;
}a[500005];
void add(int x,int y)
{
	a[++tot].z=y;
	a[tot].q=head[x];
	head[x]=tot;
}
void dfs(int x)
{
	for(int i=1;i<=22;i++)
	{
		f[x][i]=f[f[x][i-1]][0];
	}
	for(int i=head[x];i;i=a[i].q)
	{
		int t=a[i].z;
		if(t==root||dis[t])
		{
			continue;
		}
		deep[t]=deep[x]+1;
		maxn=max(maxn,deep[t]);
		f[t][0]=x;
		dis[t]=dis[x]+1;
		dfs(t);
	}
}
void dfs1(int x,int fa)
{
	if(x>=l&&r>=x)
	{
		id=x;
		return;
	}
	for(int i=head[x];i;i=a[i].q)
	{
		int t=a[i].z;
		if(t==fa)   continue;
		dfs1(t,x);
	}
}
int main()
{
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	int flag=0;
	cin>>n;
	for(int i=1;i<n;i++)
	{
		int x,y;
		cin>>x>>y;
		add(x,y);
		add(y,x);
	}
	deep[root]=-1;
	dfs(root);
	cin>>q;
	for(int i=1;i<=q;i++)
	{
		id=0;
		int minn=1e9;
		cin>>l>>r>>k;
		dfs1(1,1);
		cout<<id<<endl;
	}
}
