#include<bits/stdc++.h>
using namespace std;
const int N=5*1e5+3;
vector<int> e[2*N];
int in[N],fa[N][30],dep[N],lg[N];

void dfs(int now,int fath)
{
	dep[now]=dep[fath]+1;
	fa[now][0]=fath;
	for(int i=1;i<=lg[dep[now]];i++)
	{
		fa[now][i]=fa[fa[now][i-1]][i-1];
	 }
	 for(int i=0;i<e[now].size();i++)
	 {
	 	int  to=e[now][i];
	 	if(to==fath) continue;
	 	dfs(to,now);
	  }
}
int lca(int x,int y)
{
	if(dep[x]<dep[y]) swap(x,y);
	while(dep[x]>dep[y])
	{
		x=fa[x][lg[dep[x]-dep[y]]-1];
	}
	if(x==y) return x;
	else
	{
		for(int k=lg[dep[x]];k>=0;k--)
		{
			if(fa[x][k]!=fa[y][k])
			{
				x=fa[x][k];y=fa[y][k];
			}
		} 
		 
		 return fa[x][0];
	}
}


int main()
{
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	int n;
	cin>>n;
	for(int i=1;i<n;i++)
	{int x,y;
	scanf("%d%d",&x,&y);
		e[x].push_back(y);
		e[y].push_back(x);		 
	}
	for(int i=1;i<=n;i++)
    {
    	lg[i]=lg[i-1]+(1<<lg[i-1]==1);
	 }
	dfs(1,0);
	int q=0;
	cin>>q;
    for(int i=1;i<=q;i++)
    {
    	int r,l,k;int maxx=0;
    	scanf("%d%d%d",&r,&l,&k);
    	for(int i=r;i<=l-k+1;i++)
    	{
    		int y=lca(i,i+k-1);
    		maxx=max(dep[y],maxx);
		}
		cout<<maxx<<endl;
	}
	return 0;
}

