#include<bits/stdc++.h>
#define N 500001

using namespace std;

vector<int> vec[N];
int js[N];
int ti[N];
int n,q;
int l,r,k;
bool judge=false;
queue<int> que;
bool pd=false;
bool vis=false; 
int maxx; 

void search(int rt,int fa,int dep)
{
//	if(js[rt]==1&&dep!=1)
//	{
//		return ;
//	}
	if(rt==l)
	{
		if(vis==false)
		{
			vis=true;
		}
	}
	if(!judge)
	{
		if(rt==r)
		{
			if(vis==false)
			{
				return ;
			}
			maxx=dep-k+1;
			printf("%d\n",maxx);
			return ;
		}
	}
	search(vec[rt][0]==fa?vec[rt][1]:vec[rt][0],rt,dep+1);
}

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);
		vec[u].push_back(v);
		vec[v].push_back(u);
		js[v]++;
		js[u]++;
	}
	int rt1=0,rt2=0;
	for(int i=1;i<=n;i++)
	{
		if(js[i]==1&&rt1==0)
		{
			rt1=i;
		}
		else if(js[i]==1)
		{
			rt2=i;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(i==rt1||i==rt2)
		{
			continue;
		}
//		if(js[i]!=2)
//		{
//			judge=true;
//			cout<<1<<endl;
//		}
	}
//	for(int i=1;i<=n;i++)
//	{
//		cout<<js[i]<<endl;
//	}
	scanf("%d",&q);
	for(int i=1;i<=q;i++)
	{
		scanf("%d%d%d",&l,&r,&k);
		if(r-l+1==k)
		{
			pd=true;
		}
		vis=false;
		search(rt1,0,1);
		vis=false;
		search(rt2,0,1);
	}
}
