#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
inline int read(){
	int res=0,flag=1;
	char ch=getchar();
	while(!isdigit(ch))
		flag=(ch=='-')?-1:1,
		ch=getchar();
	while(isdigit(ch))
		res=(res<<3)+(res<<1)+(ch^48),
		ch=getchar();
	return res*flag;
}
template<typename T>
inline void write(T x){
	if(x<0) putchar('-'),x=-x;
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
struct Edge{
	int v,nxt;
}edge[N<<1];
int ecnt,head[N];
inline void add_edge(int u,int v){
	edge[++ecnt]={v,head[u]},head[u]=ecnt;
}
int dep[N],fa[N][21];
int g[N][20],lg2[N];
int t[5005][5005];
int n,q;
void dfs(int u,int pre){
	dep[u]=dep[pre]+1;
	fa[u][0]=pre;
	g[u][0]=dep[u];
	for(int k=1;k<=20;k++)
		fa[u][k]=fa[fa[u][k-1]][k-1];
	for(int e=head[u];e;e=edge[e].nxt){
		int v=edge[e].v;
		if(v==pre) continue;
		dfs(v,u);
	}
}
inline int LCA(int u,int v){
	if(u==v) return u;
	if(dep[v]>dep[u]) swap(v,u);
	for(int k=20;~k;k--)
		if(dep[fa[u][k]]>=dep[v])
			u=fa[u][k];
	if(u==v) return u;
	for(int k=20;~k;k--)
		if(fa[u][k]!=fa[v][k])
			u=fa[u][k],
			v=fa[v][k];
	return fa[u][0];
}
signed 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_edge(u,v),add_edge(v,u);
	}
	dep[0]=0;
	dfs(1,0);
	if(n>5000){
		lg2[1]=0;
		for(int i=2;i<N;i++)
			lg2[i]=lg2[i>>1]+1;
		for(int k=1;k<=20;k++)
			for(int i=1;i+(1<<k)-1<=n;i++)
				g[i][k]=min(g[i][k-1],g[i+(1<<(k-1))][k-1]);
		for(int q=read();q;q--){
			int l=read(),r=read(),len=read(),k=lg2[len],ans=0;
			len=(r-l+1),k=lg2[len],ans=min(g[l][k],g[r-(1<<k)+1][k]);
//			for(int i=l;i+len-1<=r;i++)
//				ans=max(ans,min(g[l][k],g[r-(1<<k)+1][k]));
			write(ans),putchar('\n');
		}		
	}
	else{
		for(int i=1;i<=n;i++)
			t[i][i]=i;
		for(int len=2;len<=n;len++){
			for(int l=1;l+len-1<=n;l++){
				int r=(l+len)-1;
				t[l][r]=LCA(t[l][r-1],r);
			}
		}
		for(int q=read();q;q--){
			int l=read(),r=read(),len=read(),ans=0;
			for(int i=l;i+len-1<=r;i++)
				ans=max(ans,dep[t[i][i+len-1]]);
			write(ans),putchar('\n');
		}
	}
	return 0;
}
