#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
int n,q,dep[N],go[N][30];
int head[N],to[N*2],nxt[N*2],idx;
void add(int x,int y){
	to[++idx]=y;
	nxt[idx]=head[x];
	head[x]=idx;
}
void dfs(int u,int father){
	dep[u]=dep[father]+1;
	go[u][0]=father;
	for(int i=1;i<=25;i++) go[u][i]=go[go[u][i-1]][i-1];
	for(int i=head[u];i;i=nxt[i]){
		int v=to[i];
		if(v==father) continue;
		dfs(v,u);
	}
}
int lca(int x,int y){
	if(x==y) return x;
	if(dep[x]<dep[y]) swap(x,y);
	for(int i=20;i>=0;i--) if(dep[go[x][i]]>=dep[y]) x=go[x][i];
	if(x==y) return x;
	for(int i=20;i>=0;i--) if(go[x][i]!=go[y][i]) x=go[x][i],y=go[y][i];
	return go[x][0];
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	scanf("%d",&n);
	int x,y,z;
	for(int i=1;i<n;i++){
		scanf("%d%d",&x,&y);
		add(x,y);
		add(y,x);
	}
	dfs(1,0);
	scanf("%d",&q);
	while(q--){
		scanf("%d%d%d",&x,&y,&z);
		int sum=0;
		for(int i=z;i<=n&&x+i-1<=y;i++){
			for(int j=x;j<=y&&i+j-1<=y;j++){
				int t=0;
				for(int k=j;k<=i+j-1;k++){
					if(!t) t=k;
					else t=lca(t,k);
				}
				sum=max(sum,dep[t]);
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}
