#include<iostream>
#include<vector>
using namespace std;
vector<int> t[510000];
int qq[510000],cnt=0;
struct str{
	int l,r,k;
}que[510000];
void dfs(int u,int fa)
{
	cnt++;
	qq[cnt]=u;
	for(int i=0;i<t[u].size();i++)if(t[u][i]!=fa)dfs(t[u][i],u);
}
signed main()
{
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int n,q;
	cin>>n;
	for(int i=1;i<n;i++)
	{
		int x,y;
		cin>>x>>y;
		t[x].push_back(y);
		t[y].push_back(x); 
	}
	bool ckk=true;
	cin>>q;
	for(int i=1;i<=q;i++)
	{
		cin>>que[i].l>>que[i].r>>que[i].k;
		if(que[i].k!=que[i].r-que[i].l+1)ckk=false;
	}
	if(ckk)
	{
		for(int i=1;i<=q;i++)cout<<1<<endl;
		return 0;
	}
	dfs(1,0);
	for(int j=1;j<=q;j++)
	{
		int ct=0;
		for(int i=cnt;i>=1;i--)
		{
			if(qq[i]<=que[j].r&&qq[i]>=que[j].l)ct++;
			if(ct==que[j].k)
			{
				cout<<i<<endl;
				break;
			}
		}
	}
	return 0;
}
