//Author:Dream_Flynn(luogu uid=578398)
#include<bits/stdc++.h>
using namespace std;
inline int read(){
	int k=0;
	bool f=false;
	char c=getchar();
	while(!isdigit(c)){
		f=(f||c=='-');
		c=getchar();
	}
	while(isdigit(c)){
		k=(k<<3)+(k<<1)+(c^48);
		c=getchar();
	}
	return f?-k:k;
}
inline void write(int d,char end_ch='\n'){
	if(d<0){
		d=-d;
		putchar('-');
	}
	int stk[32],top=0;
	do{
		top++;
		stk[top]=d%10;
		d/=10;
	}while(d);
	for(int i=top;i;i--){
		putchar(stk[i]^48);
	}
	putchar(end_ch);
}
const int N=5e5+5,M=1e6+5;
int n,T,idx,h[N],e[M],ne[M],dep[N],ds[N][21],deg[N];
inline void Add(int x,int y){
	idx++;
	e[idx]=y;
	ne[idx]=h[x];
	h[x]=idx;
}
namespace PlanBF{
	void build(int p,int fa,int deep){
		dep[p]=deep;
		for(int i=h[p];i;i=ne[i]){
			int son=e[i];
			if(son==fa){
				continue;
			}
			build(son,p,deep+1);
			ds[son][0]=p;
		}
	}
	int getlca(int x,int y){
		if(dep[x]<dep[y]){
			swap(x,y);
		}
		for(int i=20;i>=0;i--){
			if(dep[ds[x][i]]>=dep[y]){
				x=ds[x][i];
			}
		}
		if(x==y){
			return x;
		}
		for(int i=20;i>=0;i--){
			if(ds[x][i]!=ds[y][i]){
				x=ds[x][i];
				y=ds[y][i];
			}
		}
		return ds[x][0];
	}
	int getrnglca(int l,int r){
		int res=l;
		for(int i=l+1;i<=r;i++){
			res=getlca(res,i);
		}
		return res;
	}
	void main(){
		build(1,0,1);
		for(int i=1;i<21;i++){
			for(int j=1;j<=n;j++){
				ds[j][i]=ds[ds[j][i-1]][i-1];
			}
		}
		T=read();
		while(T--){
			int l=read(),r=read(),k=read();
			int ans=0;
			//for(int i=l;i<=r-k+1;i++){
			//	ans=max(ans,dep[getrnglca(i,i+k-1)]);
			//}
			for(int i=l;i<=r-k+1;i++){
				for(int j=i+k-1;j<=r;j++){
					ans=max(ans,dep[getrnglca(i,j)]);
				}
			}
			write(ans);
		}
	}
}
namespace PlanA{
	int st[N][21];
	void build(int p,int fa,int deep){
		st[p][0]=deep;
		for(int i=h[p];i;i=ne[i]){
			int son=e[i];
			if(son==fa){
				continue;
			}
			build(son,p,deep+1);
		}
	}
	void main(){
		build(1,0,1);
		for(int i=1;i<21;i++){
			for(int j=1;j<=n;j++){
				
			}
		}
	}
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	n=read();
	for(int i=1;i<n;i++){
		int u=read(),v=read();
		Add(u,v);
		Add(v,u);
		deg[u]++;
		deg[v]++;
	}
	int deg1=0,deg2=0;
	for(int i=1;i<=n;i++){
		if(deg[i]==1){
			deg1++;
		}
		else if(deg[i]==2){
			deg2++;
		}
	}
	if(deg1==2&&deg2==n-2){
		
	}
	PlanBF::main();
	return 0;
}
