#include<bits/stdc++.h>

using namespace std;

const int N=1000010;

int n,st[N][23],fa[N][23],dth[N],lg2[N*2];

int head[N],l=2,q;

struct side
{
    int last,to;
}e[N*4];

void add_side(int x,int y)
{
    e[l].last=head[x];
    e[l].to=y;
    head[x]=l;
    ++l;
}

void dfs(int cu,int now_fa)
{
    dth[cu]=dth[now_fa]+1;
    fa[cu][0]=now_fa;
    for(int i=1;i<=lg2[dth[cu]-1];++i)
    {
        fa[cu][i]=fa[fa[cu][i-1]][i-1];
    }
    for(int i=head[cu];i;i=e[i].last)
    {
        if(e[i].to!=now_fa)
        {
            dfs(e[i].to,cu);
        }
    }
}

int find_lca(int x,int y)
{
    if(dth[x]>dth[y])
    {
        swap(x,y);
    }
    while(dth[x]<dth[y])
    {
        y=fa[y][lg2[dth[y]-dth[x]]];
    }
    if(x==y)
    {
        return x;
    }
    for(int i=21;i>=0;--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);
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
//    cout<<1024*1024*1024;
    cin>>n;

    for(int i=2;i<=n*2;++i)
    {
        if(i==(1<<(lg2[i-1]+1)))
        {
            lg2[i]=lg2[i-1]+1;
        }
        else
        {
            lg2[i]=lg2[i-1];
        }
    }

    for(int i=1;i<=n-1;++i)
    {
        int x,y;
        cin>>x>>y;
        add_side(x,y);
        add_side(y,x);
    }
    dfs(1,0);

    for(int i=1;i<=n;++i)
    {
        st[i][0]=i;
    }
    for(int j=1;j<=lg2[n];++j)
    {
        for(int i=1;i<=n-(1<<j)+1;++i)
        {
            st[i][j]=find_lca(st[i][j-1],st[i+(1<<(j-1))][j-1]);
        }
    }
    /*
    for(int i=1;i<=n;++i)
    {
        for(int j=0;j<=(int)log2(n);++j)
        {
            cout<<st[i][j]<<' ';
        }
        cout<<'\n';
    }
    */
    cin>>q;
    for(int i=1;i<=q;++i)
    {
        int l,r,k,ans=1;
        cin>>l>>r>>k;
        int p=lg2[k];
//        cout<<l<<' '<<r<<' '<<k<<'\n';
        for(int j=l;j<=r-k+1;++j)
        {
            //l,l+k-1
            int new_point=find_lca(st[j][p],st[j+k-(1<<p)][p]);
//            cout<<j<<' '<<p<<' '<<j+k-(1<<p)<<' '<<p<<'\n';
//            cout<<new_point<<'\n';
            ans=max(ans,dth[new_point]);
//            cout<<new_point<<' '<<dth[new_point]<<'\n';
        }
        cout<<ans<<'\n';
    }
    return 0;
}

