#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define _ 500005
ll n,fa[_][21],dep[_],st[21][_],lg2[_],q,du[_];
vector<ll> son[_];
void add(ll x,ll y) {son[x].push_back(y);}
void dfs(ll x,ll f) {
    fa[x][0]=f;dep[x]=dep[f]+1;
    for(ll i=1;i<=20;i++) fa[x][i]=fa[fa[x][i-1]][i-1];
    for(auto y:son[x]) {
        if(y==f) continue;
        dfs(y,x);
    }
}
ll lca(ll x,ll y) {
    if(dep[x]<dep[y]) swap(x,y);
    for(ll i=20;i>=0;i--) if(dep[fa[x][i]]>=dep[y]) x=fa[x][i];
    if(x==y) return x;
    for(ll i=20;i>=0;i--) if(fa[x][i]!=fa[y][i]) x=fa[x][i],y=fa[y][i];
    return fa[x][0];
}
ll getlca(ll l,ll r) {
    ll len=r-l+1;
    return lca(st[lg2[len]][l],st[lg2[len]][r-(1<<lg2[len])+1]);
}
int main() {
    freopen("query.in","r",stdin);
    freopen("query.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>n;
    for(ll i=1,x,y;i<n;i++) {
        cin>>x>>y;
        add(x,y),add(y,x);
        du[x]++,du[y]++;
    }
    dfs(1,0);
    lg2[1]=0,st[0][1]=1;
    for(ll i=2;i<=n;i++) st[0][i]=i,lg2[i]=lg2[i>>1]+1;
    for(ll i=1;i<=20;i++) {
        for(ll j=1;j+(1<<i)<=n;j++) 
            st[i][j]=lca(st[i-1][j],st[i-1][j+(1<<(i-1))]);
    }
    ll uuu=0,bbj=0;
    for(ll i=1;i<=n;i++) {
        if(du[i]>2) bbj=1;
        if(du[i]==1) uuu++;
    }
    if(uuu==2&&!bbj) {
        cin>>q;
        for(ll i=1,l,r,k;i<=q;i++) {
            cin>>l>>r>>k;
            ll ans=0;
            for(ll i=l;i+k-1<=r;i++) ans=max(ans,dep[getlca(i,i+k-1)]);
            cout<<ans<<endl;
        }
        return ;
    }
    // for(ll i=1;i<=n;i++) {
    //     for(ll j=i;j<=n;j++) cout<<getlca(i,j)<<' ';
    //     cout<<endl;
    // }
    cin>>q;
    for(ll i=1,l,r,k;i<=q;i++) {
        cin>>l>>r>>k;
        ll ans=0;
        for(ll i=l;i+k-1<=r;i++) ans=max(ans,dep[getlca(i,i+k-1)]);
        cout<<ans<<endl;
    }
    return 0;
}