#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
int h[N],to[N<<1],ne[N<<1];
int dep[N],que[N],idx1,idx2;
int n,m,cnt;
void ad(int u,int v)
{
	to[++cnt]=v;
	ne[cnt]=h[u];
	h[u]=cnt;
}
void dfs(int u)
{
	for(int i=h[u];i;i=ne[i])
	{
		int v=to[i];
		if(dep[v])
		{
			continue;
		}
		dep[v]=dep[u]+1;
		dfs(v);
	}
}
int main()
{
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<n;++i)
	{
		int u,v;
		cin>>u>>v;
		ad(u,v);
		ad(v,u);
	}
	dep[1]=1;
	dfs(1);
	cin>>m;
	for(int i=1;i<=m;++i)
	{
		int l,r,k,ans=0;
		cin>>l>>r>>k;
		idx1=idx2=1;
		for(int j=l;j<=r;++j)
		{
			while(idx1<idx2&&dep[que[idx2-1]]>=dep[j])
			{
				--idx2;
			}
			if(idx1<idx2&&j-que[idx1]==k)
			{
				++idx1;
			}
			que[idx2++]=j;
			if(j-l+1>=k&&ans<dep[que[idx1]])
			{
				ans=dep[que[idx1]];
			}
		}
		cout<<ans<<"\n";
	}
}
