#include <bits/stdc++.h>
using namespace std;
int n,q,d[514114],s[514114],fa[514114][20],r=1;
vector<int> e[514114];
void build(int x,int f,int de){
	d[x]=de;
	s[de]++;
	if(s[de]>1) r=0;
	fa[x][0]=f;
	for(int i=0;i<e[x].size();i++){
		if(e[x][i]!=f) build(e[x][i],x,de+1);
	}
}
void ysd(int l,int r,int k){
	priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;
	int an=1919810;
	while(q.size()<k){
		q.push({d[l],l});
		while(d[l]<q.top().first) q.pop();
		l++;
	} an=q.top().first;
	while(l<=r){
		q.push({d[l],l});
		while(q.top().second<l-k) q.pop();
		while(d[l]<q.top().first) q.pop();
		an=max(an,q.top().first);
		l++;
	}
	cout<<an<<"\n";
	return;
}
void ys(){
	for(int i=1,l,r,k;i<=q;i++){
		cin>>l>>r>>k;
		ysd(l,r,k);
	}
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(int i=1,j,k;i<n;i++){
		cin>>j>>k;
		e[j].push_back(k);
		e[k].push_back(j);
	}
	build(1,0,1);
	//for(int i=1;i<=n;i++) cout<<d[i]<<" "; cout<<"\n";
	cin>>q;
	ys();
	return 0; 
}
