#include<iostream>
#include<cstdio>
using namespace std;
const int N=5e3+5,D=21;
int n,Q;
int lst[N],nxt[N<<1],to[N<<1],cnt;
void add(int u,int v){to[++cnt]=v,nxt[cnt]=lst[u],lst[u]=cnt;}
int dfn[N],mrk;
int mn[N][N],mx[N][N];
int fa[N][D],dep[N];
void dfs(int u,int fr,int d){
	fa[u][0]=fr,dep[u]=d;
	for(int d=1;d<D;d++) fa[u][d]=fa[fa[u][d-1]][d-1];
	for(int i=lst[u];i;i=nxt[i]){
		int v=to[i];
		if(v==fr) continue;
		dfs(v,u,d+1);
	}
}
int lca(int x,int y){
	if(dep[x]<dep[y]) swap(x,y);
	int d=dep[x]-dep[y];
	for(int i=0;d;d>>=1,i++) if(d&1) x=fa[x][i];
	if(x==y) return x;
	for(int i=D-1;~i;i--) if(fa[x][i]!=fa[y][i]) x=fa[x][i],y=fa[y][i];
	return fa[x][0];
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<n;i++){
		int u,v;scanf("%d%d",&u,&v);
		add(u,v),add(v,u);
	}
	dfs(1,0,1);
	scanf("%d",&Q);
	while(Q--){
		int l,r,k,ans=0;
		scanf("%d%d%d",&l,&r,&k);
		for(int i=l;i<=r-k+1;i++){
			int pos=i;
			if(k==1) ans=max(ans,dep[i]);
			for(int j=i+1;j<=r;j++){
				pos=lca(pos,j);
				if(j-i+1>=k) ans=max(ans,dep[pos]);
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}
