#include <bits/stdc++.h>
using namespace std;
const int N=500010;
int n,q;
vector<int> g[N];
int f[N<<1][25],L[N][25],logx[N<<1],d[N],t,fi[N];
int cmp(int a,int b)
{
	if(d[a]<d[b]) return a;
	return b;
}
int lca(int u,int v)
{
	u=fi[u],v=fi[v];
	if(u>v) swap(u,v);
	int l=logx[v-u+1];
	return cmp(f[u][l],f[v-(1<<l)+1][l]);
}
int Lca(int x,int y)
{
	int l=logx[y-x+1];
	return lca(L[x][l],L[y-(1<<l)+1][l]);
}
void dfs(int u,int fa)
{
	f[++t][0]=u;
	fi[u]=t;
	logx[t]=logx[t>>1]+1;
	for(int v:g[u])
	{
		if(v==fa) continue;
		d[v]=d[u]+1;
		dfs(v,u);
		f[++t][0]=u;
		logx[t]=logx[t>>1]+1;
	}
}
void init()
{
	for(int j=1;j<=logx[t];j++)
	{
		for(int i=1;i+(1<<j)-1<=t;i++)
		{
			f[i][j]=cmp(f[i][j-1],f[i+(1<<j-1)][j-1]);
		}
	}
	for(int i=1;i<=n;i++) L[i][0]=i;
	for(int j=1;j<=logx[n];j++)
	{
		for(int i=1;i+(1<<j)-1<=n;i++)
		{
			L[i][j]=lca(L[i][j-1],L[i+(1<<j-1)][j-1]);
		}
	}
}
signed 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;
		g[u].push_back(v),g[v].push_back(u);
	}
	d[1]=1,logx[0]=-1;
	dfs(1,0);
	init();
//	cout<<1<<endl;
	cin>>q;
	while(q--)
	{
		int l,r,k;
		cin>>l>>r>>k;
		int ans=0;
		for(int i=l;i+k-1<=r;i++) ans=max(ans,d[Lca(i,i+k-1)]);
		cout<<ans<<"\n";
	}
	return 0;
}
/*
6
5 6
6 1
6 2
2 3
2 4
3
2 5 2
1 4 1
1 6 3

*/
