#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=10005;
int to[maxn],nt[maxn],head[maxn],tot,vis[maxn];
int n,l,r,k,q;
int deep[maxn],fa[maxn];
void add(int x,int y){
	to[++tot]=y;
	nt[tot]=head[x];
	head[x]=tot;
}
void dfs(int x){
	for(int i=head[x];i;i=nt[i]){
		int u=to[i];
		if(vis[u]||fa[x]==u)continue;
		deep[u]=deep[x]+1;
		fa[u]=x;
		vis[u]=1;
		dfs(u);
	}
}
int lca(int x,int y){
	if(deep[x]>deep[y])swap(x,y);
	while(deep[y]>deep[x])y=fa[y];
	if(x==y)return x;
	while(fa[x]!=fa[y])x=fa[x],y=fa[y];
	return fa[x];
}
int LCA(int l,int r){
	if(l==r)return l;
	int p=l;
	for(int i=l+1;i<=r;i++)p=lca(p,i);
	return p;
}
int query(int l,int r,int k){
	int mx=-1;
	for(int i=l;i<=r-k+1;i++){
		int p=i;
		p=LCA(i,i+k-1);
		//cout<<i<<" "<<i+k-1<<"="<<p<<endl;
		mx=max(mx,deep[p]);
	}
	return mx;
}
int 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);
	}
	deep[1]=1;
	dfs(1);
	cin>>q;
	for(int i=1;i<=q;i++){
		cin>>l>>r>>k;
		cout<<query(l,r,k)<<"\n";
	}
	return 0;
}
/*
6
5 6
6 1
6 2
2 3
2 4
3
2 5 2
1 4 1
1 6 3

*/

