#include<bits/stdc++.h>
#define fre(s) freopen(#s".in","r",stdin);freopen(#s".out","w",stdout);
using namespace std;
const int N=5e5+5,Log=20;
int n,q;
vector<int>e[N];
int dep[N],f[N][Log];
void dfs(int x,int fa)
{
	dep[x]=dep[fa]+1;
	for(int i=1;i<Log;i++)
		f[x][i]=f[f[x][i-1]][i-1];
	for(auto v:e[x])
	{
		if(fa==v)continue;
		f[v][0]=x;
		dfs(v,x);
	}
}
int lca(int x,int y)
{
	if(dep[x]<dep[y])swap(x,y);
	for(int i=Log-1;i>=0;i--)if((1<<i)<=(dep[x]-dep[y]))x=f[x][i];
	if(x==y)return y;
	for(int i=Log-1;i>=0;i--)if(f[x][i]!=f[y][i])x=f[x][i],y=f[y][i];
	return f[y][0];
}
int st[N][Log],lg[N];
int main()
{
	fre(query);
	scanf("%d",&n);
	lg[1]=0;
	for(int i=2;i<=n;i++)lg[i]=lg[i>>1]+1;
	for(int i=1;i<n;i++)
	{
		int u,v;
		scanf("%d%d",&u,&v);
		e[u].push_back(v);
		e[v].push_back(u);
	}
	dfs(1,0);
	for(int i=1;i<=n;i++)st[i][0]=i;
	for(int i=1;i<Log;i++)
	{
		for(int j=1;j+(1<<i)-1<=n;j++)
		{
			st[j][i]=lca(st[j][i-1],st[j+(1<<(i-1))][i-1]);
		}
	}
	scanf("%d",&q);
	while(q--)
	{
		int l,r,k;
		scanf("%d%d%d",&l,&r,&k);
		int ans=0;
		for(int i=l;i+k-1<=r;i++)
		{
			ans=max(ans,dep[lca(st[i][lg[k]],st[(i+k-1)-(1<<lg[k])+1][lg[k]])]);
		}
		printf("%d\n",ans);
	}
	return 0;
}
