#include<bits/stdc++.h>
using namespace std;
bool MB1;
const int N=5e5+10;
int fa[N],dep[N],dta[N];
vector<int> p[N];
void dfs(int x,int f){
	fa[x]=f;dep[x]=dep[f]+1;
	for(int i=0;i<p[x].size();i++){
		int y=p[x][i];
		if(y==f) continue;
		dfs(y,x);
	}
}
void add(int x,int v){
	while(x) dta[x]+=v,x=fa[x];
}
int ask(int k){
	int q=1,ans=0;
	while(q){
		int son=0;
		ans=max(ans,dep[q]);
		for(int i=0;i<p[q].size();i++){
			int y=p[q][i];
			if(dta[y]==k&&y!=fa[q]){
				son=y;
				break;
			}
		}
		q=son;
	}
	return ans;
}
void solve1(){
	
}
bool MB2;
void end(){
	cerr<<endl;
	cerr<<fixed<<setprecision(3)<<abs(&MB2-&MB1)/1024.0/1024.0<<"MB"<<endl;
	cerr<<fixed<<setprecision(3)<<(double)clock()/CLOCKS_PER_SEC<<"ms"<<endl;
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin>>n;
	bool f=1;
	for(int i=1;i<n;i++){
		int x,y;
		cin>>x>>y;
		p[x].push_back(y);
		p[y].push_back(x);
	}
	dfs(1,0);
	int q;cin>>q;
	for(int i=1;i<=q;i++){
		int l,r,k,ans=0;
		cin>>l>>r>>k;
		for(int j=l;j<=l+k-1;j++) add(j,1);
		ans=ask(k);
		for(int j=l+k;j<=r;j++){
			add(j-k,-1);
			add(j,1);
			ans=max(ans,ask(k));
		}
		for(int j=r-k+1;j<=r;j++) add(j,-1);
		cout<<ans<<endl;
	}
//	end();
}

