#include<bits/stdc++.h>
using namespace std;
const int N=5e5+100;
int n,fa[N][21],q,d[N],lian=1;
vector<int>g[N];
void bfs(){
	queue<int>qe;
	vector<bool>vis(n+1);
	vis[1]=1;
	qe.push(1);
	while(!qe.empty()){
		int t=qe.front();
		qe.pop();
		int cnt=0;
		for(int v:g[t]){
			if(!vis[v]){
				cnt++;
				d[v]=d[t]+1;
				qe.push(v);
				vis[v]=1;
				fa[v][0]=t;
			}
		}
		if(cnt!=1&&g[t].size()!=0)lian=0;
	}
}
int lca(int u,int v){
	if(d[u]<d[v])swap(u,v);
	if(d[u]!=d[v]){
		for(int i=20;i>=0;i--){
			if(d[fa[u][i]]>d[v])u=fa[u][i];
//			cout<<u<<'\n';
		}
		u=fa[u][0];
	}
	if(u==v)return u;
	for(int i=20;i>=0;i--){
//		cout<<i<<" "<<fa[u][i]<<" "<<fa[v][i]<<'\n';
		if(fa[u][i]!=fa[v][i]){
			u=fa[u][i];
			v=fa[v][i];
		}
	}
	u=fa[u][0];
	return u;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	cin>>n;
	d[1]=1;
	for(int i=1;i<n;i++){
		int u,v;
		cin>>u>>v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	bfs();
	for(int i=1;i<=20;i++){
		for(int j=1;j<=n;j++){
			fa[j][i]=fa[fa[j][i-1]][i-1];
		}
	}
//	for(int i=1;i<=n;i++)cout<<d[i]<<" ";
	cin>>q;
	while(q--){
		int l,r,k,ans=1;
		cin>>l>>r>>k;
//		if(lian){
//			
//			continue;
//		}
		for(int i=l;i<=r-k+1;i++){
			int j=i+k-1;
			int x=i;
			for(int l=i+1;l<=j;l++){
				x=lca(x,l);
			}
			ans=max(ans,d[x]);
		}
		cout<<ans<<'\n';
	}
	return 0;
}
