#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5e5+10;
struct Node{
	int v,nxt;
}e[N<<1];
int h[N],idx;
void connec(int u,int v){
	e[++idx]={v,h[u]};
	h[u]=idx;
}
int f[N][20],dep[N];
void dfs(int u,int fa){
	dep[u]=dep[fa]+1;
	for(int i=h[u];i;i=e[i].nxt){
		int v=e[i].v;
		if(v==fa)continue;
		f[v][0]=u;
		for(int k=1;(1<<k)<=dep[u];k++)
			f[v][k]=f[f[v][k-1]][k-1];
		dfs(v,u);
	}
}
int lca(int x,int y){
	if(dep[x]<dep[y]) swap(x,y);
	for(int i=19;i>=0;i--)
		if(dep[f[x][i]]>=dep[y]) x=f[x][i];
	if(x==y) return y;
	for(int i=19;i>=0;i--)
		if(f[x][i]!=f[y][i]) x=f[x][i],y=f[y][i];
	return f[x][0];
}
int n,q;
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<n;i++){
		int u,v;cin>>u>>v;
		connec(u,v);
		connec(v,u);
	}
	dfs(1,0);
	cin>>q;
	while(q--){
		int l,r,k;
		cin>>l>>r>>k;
		int res=0;
		for(int i=l;i<=r-k+1;i++){
			int tem=i;
			for(int j=i+1;j<=i+k-1;j++)
				tem=lca(tem,j);
			res=max(res,dep[tem]);
		}
		cout<<res<<"\n";
	}
	return 0;
}
