#include<bits/stdc++.h>
using namespace std;
const int N=500010;
int n,q,fa[N],e[N],ne[N],h[N],idx,jp[N][22],dep[N];
inline void add(int a,int b)
{
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs(int u,int pre)
{
dep[u]=dep[pre]+1;
jp[u][0]=pre;
for(int i=1;i<=21;++i) jp[u][i]=jp[jp[u][i-1]][i-1];
for(int i=h[u];~i;i=ne[i])
if(e[i]!=pre) dfs(e[i],u);
}
int LCA(int x,int y)
{
if(dep[x]<dep[y]) swap(x,y);
for(int i=21;i>=0;--i) if(dep[jp[x][i]]>=dep[y]) x=jp[x][i];
if(x==y) return x;
for(int i=21;i>=0;--i) if(jp[x][i]!=jp[y][i]) x=jp[x][i],y=jp[y][i];
return jp[x][0];
}
int main()
{
freopen("query.in","r",stdin);
freopen("query.out","w",stdout);
memset(h,-1,sizeof h);
scanf("%d",&n);
for(int i=1,a,b;i<n;++i) scanf("%d%d",&a,&b),add(a,b),add(b,a);
dep[1]=1;
dfs(1,0);
if(n<=5008);
{
scanf("%d",&q);
while(q--)
{
int a,b,k,res=0;
scanf("%d%d%d",&a,&b,&k);
for(int i=a;i<=b;++i)
for(int j=i+k-1;j<=b;++j)
{
int tt=i;
for(int p=i+1;p<=j;++p)
tt=LCA(tt,p);
res=max(res,dep[tt]);
}
printf("%d\n",res);
}
}
return 0;
}