#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,q;
int f[100016][22],lca[5016][5016];
int head[200016],nxt[200016],adj[200016],tot,dep[200016];
void add(int a,int b)
{
	adj[++tot]=b;
	nxt[tot]=head[a];
	head[a]=tot;
}
void dfs(int u,int fa)
{
	for(int i=head[u];i;i=nxt[i])
	{
		if(adj[i]==fa) continue;
		dep[adj[i]]=dep[u]+1;
		f[adj[i]][0]=u;
		dfs(adj[i],u);
	}
}
int LCA(int x,int y)
{
	if(dep[x]>dep[y]) swap(x,y);
	for(int i=20;i>=0;i--)
	{
		if(dep[f[y][i]]>=dep[x]) y=f[y][i];
	} 
	if(x==y) return x;
	for(int i=20;i>=0;i--)
	{
		if(f[y][i]!=f[x][i])
		{
			x=f[x][i];
			y=f[y][i];
		}
	}
	return f[x][0];
}
signed 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;
		add(u,v);
		add(v,u);
	}
	dep[1]=1;
	dfs(1,0);
	for(int i=1;i<=20;i++)
	{
		for(int j=1;j<=n;j++)
		{
			f[j][i]=f[f[j][i-1]][i-1];
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			lca[i][j]=LCA(i,j);
		}
	}
	cin>>q;
	for(int i=1;i<=q;i++)
	{
		int l,r,k;
		cin>>l>>r>>k;
		if(k==1) 
		{
			int ans=0;
			for(int j=l;j<=r;j++) 
			{
				ans=max(ans,dep[j]);
			}
			cout<<ans<<endl;
			continue;
		}
		int ans=-1;
		for(int j=l;j+k-1<=r;j++)
		{
			int jj=j+k-1;
			int x=j;
			for(int s=j+1;s<=jj;s++)
			{
				x=lca[x][s];
			}	
			ans=max(ans,dep[x]);
//			cout<<x<<endl;
		}
		cout<<ans<<endl;
	}
}
