#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll const maxn=5e5+5;
ll n,d[maxn],q;
vector<ll> adj[maxn];


int main(){
//	ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
//---------------------!!!!!!!!!!!!!!!!!!!!!!!!!!
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	
	cin>>n;
	for(ll i{1};i<n;i++){
		ll u,v;
		cin>>u>>v;
		adj[u].push_back(v);
		adj[v].push_back(u);
	}
//	cout<<adj[1].size();
//	return 0;
//	for(ll i{1};i<=n;i++){
//		cout<<adj[i].size()<<'\n';
//	}
//	dfs(0,1,1);
	cin>>q;
//	cout<<q<<'\n';
	ll f{0},u{1};
	while(1){
		if(adj[u].size()!=2&&u!=1)break;
		d[u]=d[f]+1;
		if(adj[u][0]!=f){
			f=u;
			u=adj[u][0];
		}else{
			f=u;
			u=adj[u][1];
		}
	}
	for(ll i{1};i<=q;i++){
		ll l,r,k;
		cin>>l>>r>>k;
		ll ans{};
		for(ll j{l};j<=r-k+1;j++){
//		for(ll j{l};j<=r;j++){
//			ans=max(ans,d[j]);
//			for(ll p{j};p<=j+k-1;p++){
//				ans=max(ans,min(d[p],d[j+p-1]));
//			}
			ans=max(ans,min(d[j],d[j+k-1]));
		}
		cout<<ans<<'\n';
	}
	cout<<flush;
}
