#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,q,fa[N],dep[N],son[N],top[N],zs[N];
vector<int>ld[N];
void dfs(int u)
{
	int maxx=0;
	for(int v:ld[u])
	{
		if(v!=fa[u])
		{
			fa[v]=u;
			dep[v]=dep[u]+1;
			dfs(v);
			zs[u]+=zs[v];
			if(zs[v]>maxx) maxx=zs[v],son[u]=v;
		}
	}
	zs[u]=1;
}
void dfss(int u,int t)
{
	if(u==0)return ;
	top[u]=t;
	dfss(son[u],t);
	for(int v:ld[u])
	{
		if(v!=fa[u]&&v!=son[u])dfss(v,v);
	}
}
int lca(int x,int y)
{
	int tx=top[x],ty=top[y];
	while(tx!=ty)
	{
		if(dep[tx]<dep[ty])
		{
			swap(tx,ty),swap(x,y);
		}
		x=fa[tx],tx=top[x];
	}
	if(dep[x]<dep[y])return x;
	else return y;
}
int main()
{
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	cin>>n;
	for(int i=1;i<n;i++)
	{
		int u,v;
		cin>>u>>v;
		ld[u].push_back(v);
		ld[v].push_back(u);
	}
	dfs(1);
	dfss(1,1);
	cin>>q;
	for(int i=1;i<=q;i++)
	{
		int l,r,k,ans=-1;
		cin>>l>>r>>k;
		for(int j=l;j<=r-k+1;j++)
		{
			int f=j;
			for(int ij=j+1;ij<=l+k-1;ij++)
			{
				f=lca(f,ij);
			}
			if(ans==-1)ans=f;
			else if(dep[ans]<dep[f])ans=f;
		}
		cout<<dep[ans]<<endl;
	}
}
