#include<bits/stdc++.h>
#define ls (k<<1)
#define rs (k<<1|1)
using namespace std;
const int N=5e5;
int n;
int fst[N],nxt[N<<1],to[N<<1],ecnt;
void adde(int u,int v){
	ecnt++;
	to[ecnt]=v;
	nxt[ecnt]=fst[u];
	fst[u]=ecnt;
}
int st[20010][30],tot,lca[5010][5010],dep[N],id[N];
void dfs(int u,int fa){
	dep[u]=dep[fa]+1;
	st[++tot][0]=u;
	id[u]=tot;
	for(int i=fst[u];i;i=nxt[i]){
		int v=to[i];
		if(v==fa)continue;
		dfs(v,u);
		st[++tot][0]=u;
	}
}
int query(int l,int r){
	if(l>r)swap(l,r);
	int k=__lg(r-l+1);
	if(dep[st[l][k]]<dep[st[r-(1<<k)+1][k]])return st[l][k];
	return st[r-(1<<k)+1][k];
}
void solve1(){
	for(int i=1,u,v;i<n;i++){
		scanf("%d%d",&u,&v);
		adde(u,v);adde(v,u);
	}
	dfs(1,1);
	for(int j=1;j<=20;j++){
		for(int i=1;i+(1<<j)-1<=tot;i++){
			if(dep[st[i][j-1]]<dep[st[i+(1<<(j-1))][j-1]])st[i][j]=st[i][j-1];
			else st[i][j]=st[i+(1<<(j-1))][j-1];
		}
	}
	for(int i=1;i<=n;i++){
		lca[i][i]=i;
		for(int j=i+1;j<=n;j++){
			lca[i][j]=query(id[lca[i][j-1]],id[j]);
		}
	}
	int q;cin>>q;
	while(q--){
		int l,r,k;
		scanf("%d%d%d",&l,&r,&k);
		int ret=0;
		for(int i=l;i+k-1<=r;i++){
			ret=max(ret,dep[lca[i][i+k-1]]);
		}
		printf("%d\n",ret);
	} 
}
int L[N<<2],R[N<<2],Lca[N<<2];
void push_up(int k){Lca[k]=query(id[Lca[ls]],id[Lca[rs]]);}
void build(int k,int l,int r){
	L[k]=l,R[k]=r;
	if(l==r){
		Lca[k]=l;
		return;
	}
	int mid=(l+r)>>1;
	build(ls,l,mid),build(rs,mid+1,r);
	push_up(k); 
}
int Query(int k,int l,int r){
	if(l<=L[k]&&R[k]<=r)return Lca[k];
	int mid=(l+r)>>1;
	if(r<=mid)return Query(ls,l,r);
	if(mid<l)return Query(rs,l,r);
	return query(id[Query(ls,l,r)],id[Query(rs,l,r)]); 
}
void solve2(){
	for(int i=1,u,v;i<n;i++){
		scanf("%d%d",&u,&v);
		adde(u,v);adde(v,u);
	}
	dfs(1,1);
	for(int j=1;j<=20;j++){
		for(int i=1;i+(1<<j)-1<=tot;i++){
			if(dep[st[i][j-1]]<dep[st[i+(1<<(j-1))][j-1]])st[i][j]=st[i][j-1];
			else st[i][j]=st[i+(1<<(j-1))][j-1];
		}
	}
	build(1,1,n);
	int q;cin>>q;
	while(q--){
		int l,r,k;
		scanf("%d%d%d",&l,&r,&k);
		printf("%d\n",dep[Query(1,l,r)]);
	} 
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	cin>>n;
	if(n<=5000){
		solve1();
	}else{
		solve2();
	}
	return 0;
}
