#include<bits/stdc++.h>
using namespace std;
const int N=2*1e6+3;
int dep[N];
int e[N],h[N],ne[N],idx;
int n;
int st[N][30];
int fa[N];
int q;
void dfs(int x)
{
	for(int i=h[x];~i;i=ne[i])
	{
		int y=e[i];
		if(fa[x]!=y)
		{
			fa[y]=x;
			dep[y]=dep[x]+1;
			dfs(y);
		}
	}
} 
void build()
{
	for(int i=1;i<=n;i++)
	{
		st[i][0]=fa[i];
	} 
	for(int j=1;j<=int(log2(n))+1;j++)
	{
		for(int i=1;i<=n;i++)
		{
			st[i][j]=st[st[i][j-1]][j-1];
		}
	}
}
int lca(int x,int y)
{
	if(dep[x]<dep[y])
	{
		swap(x,y);
	}
	for(int i=int(log2(n))+1;i>=0;i--)
	{
		if(dep[st[x][i]]>dep[y])
		{
			x=st[x][i];
		}
	}
	if(x==y)
	{
		return x;
	}
	for(int i=int(log2(n))+1;i>=0;i--)
	{
		if(st[x][i]!=st[y][i])
		{
			x=st[x][i];
			y=st[y][i];
		}
	}
	return st[x][0];
}
void add(int x,int y)
{
	e[++idx]=y;
	ne[idx]=h[x];
	h[x]=idx;
}
int in()
{
	int ans=0,ff=1;
	char c=getchar();
	for(;!isdigit(c);c=getchar())
	{
		if(c=='-')
		{
			ff*=-1;
		}
	}
	for(;isdigit(c);c=getchar())
	{
		ans=ans*10+c-'0';
	}
	return ans*ff;
}
void out(int x)
{
	if(x<0)
	{
		x=-x;
		putchar('-');
	}
	if(x>=10)
	{
		out(x/10);
	}
	putchar(x%10+'0');
}
int main()
{
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	memset(h,-1,sizeof h);
	n=in();
	for(int i=1;i<=n-1;i++)
	{
		int u=in(),v=in();
		add(u,v);
		add(v,u);
	}
	dep[1]=1;
	dfs(1);
	build();
//	for(int i=1;i<=n;i++)
//	{
//		for(int j=0;j<=int(log2(n))+1;j++)
//		{
//			cout<<st[i][j]<<" ";
//		}
//		cout<<endl;
//	}
//	cout<<lca(4,3);
	q=in();
	for(int i=1;i<=q;i++)
	{
		int ans=0;
		int l=in(),r=in(),k=in();
		for(int i=l;i<=r-k+1;i++)
		{
			int tmp=i;
			for(int j=i+1;j<=i+k-1;j++)
			{
				tmp=lca(tmp,j);
			}
			ans=max(ans,dep[tmp]);
		}
		out(ans);
		puts("");
	}
	return 0;
}
/*
6
5 6
6 1
6 2
2 3
2 4
3 
2 5 2
1 4 1
1 6 3
*/

