#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e5 + 5, LOG= 17;
long long n,q, par[MaxN][LOG], d[MaxN];
vector<long long> vt[MaxN];
void dfs(long long u)
{
for(long long v : vt[u])
{
if(v!=par[u][0])
{
par[v][0]=u;
d[v]=d[u]+1;
dfs(v);
}
}
}
long long lca(long long u, long long v)
{
if(d[u]<d[v]) swap(u,v);
for (long long i=LOG-1; i>=0; i--)
{
if(d[par[u][i]]>=d[v])
{
u=par[u][i];
}
}
if(u==v) return u;
for (long long i=LOG-1; i>=0; i--)
{
if(par[u][i]!=par[v][i])
{
u=par[u][i];
v=par[v][i];
}
}
return par[u][0];
}
void input()
{
cin >> n >> q;
for (long long i=1; i<n; i++)
{
long long u,v;
cin >> u >> v;
vt[u].push_back(v);
vt[v].push_back(u);
}
}
void solve()
{
dfs(1);
for (long long j=1; j<LOG; j++)
{
for (long long i=1; i<=n; i++)
{
par[i][j]=par[par[i][j-1]][j-1];
}
}
d[0]=-1;
for (long long i=1; i<=q; i++)
{
long long u,v, w;
cin >> u >> v >> w;
long long l = lca(u,v);
long long len1 = d[u]-d[l];
long long len = d[u]+d[v]-2*d[l];
if(w<=len1)
{
for(long long i=0; i<LOG; i++)
{
if((w>>i)&1)
{
u=par[u][i];
}
}
cout << u << "\n";
}
else
{
if(w>=len)
{
cout << v << "\n";
continue;
}
long long new_w = len-w;
for(long long i=0; i<LOG; i++)
{
if((new_w>>i)&1)
{
v=par[v][i];
}
}
cout << v << "\n";
}
}
}
int main()
{
input();
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgbG9uZyBsb25nIE1heE4gPSAxZTUgKyA1LCBMT0c9IDE3Owpsb25nIGxvbmcgbixxLCBwYXJbTWF4Tl1bTE9HXSwgZFtNYXhOXTsKdmVjdG9yPGxvbmcgbG9uZz4gdnRbTWF4Tl07CnZvaWQgZGZzKGxvbmcgbG9uZyB1KQp7CiAgICBmb3IobG9uZyBsb25nIHYgOiB2dFt1XSkKICAgIHsKICAgICAgICBpZih2IT1wYXJbdV1bMF0pCiAgICAgICAgewogICAgICAgICAgICBwYXJbdl1bMF09dTsKICAgICAgICAgICAgZFt2XT1kW3VdKzE7CiAgICAgICAgICAgIGRmcyh2KTsKICAgICAgICB9CiAgICB9Cn0KbG9uZyBsb25nIGxjYShsb25nIGxvbmcgdSwgbG9uZyBsb25nIHYpCnsKICAgIGlmKGRbdV08ZFt2XSkgc3dhcCh1LHYpOwoKICAgIGZvciAobG9uZyBsb25nIGk9TE9HLTE7IGk+PTA7IGktLSkKICAgIHsKICAgICAgICBpZihkW3Bhclt1XVtpXV0+PWRbdl0pCiAgICAgICAgewogICAgICAgICAgICB1PXBhclt1XVtpXTsKICAgICAgICB9CiAgICB9CiAgICBpZih1PT12KSByZXR1cm4gdTsKCiAgICBmb3IgKGxvbmcgbG9uZyBpPUxPRy0xOyBpPj0wOyBpLS0pCiAgICB7CiAgICAgICAgaWYocGFyW3VdW2ldIT1wYXJbdl1baV0pCiAgICAgICAgewogICAgICAgICAgICB1PXBhclt1XVtpXTsKICAgICAgICAgICAgdj1wYXJbdl1baV07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHBhclt1XVswXTsKfQp2b2lkIGlucHV0KCkKewogICAgY2luID4+IG4gPj4gcTsKICAgIGZvciAobG9uZyBsb25nIGk9MTsgaTxuOyBpKyspCiAgICB7CiAgICAgICAgbG9uZyBsb25nIHUsdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIHZ0W3VdLnB1c2hfYmFjayh2KTsKICAgICAgICB2dFt2XS5wdXNoX2JhY2sodSk7CiAgICB9Cn0Kdm9pZCBzb2x2ZSgpCnsKICAgIGRmcygxKTsKICAgIGZvciAobG9uZyBsb25nIGo9MTsgajxMT0c7IGorKykKICAgIHsKICAgICAgICBmb3IgKGxvbmcgbG9uZyBpPTE7IGk8PW47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIHBhcltpXVtqXT1wYXJbcGFyW2ldW2otMV1dW2otMV07CiAgICAgICAgfQogICAgfQogICAgZFswXT0tMTsKICAgIGZvciAobG9uZyBsb25nIGk9MTsgaTw9cTsgaSsrKQogICAgewogICAgICAgIGxvbmcgbG9uZyB1LHYsIHc7CiAgICAgICAgY2luID4+IHUgPj4gdiA+PiB3OwogICAgICAgbG9uZyBsb25nIGwgPSBsY2EodSx2KTsKICAgICAgICBsb25nIGxvbmcgbGVuMSA9IGRbdV0tZFtsXTsKICAgICAgICBsb25nIGxvbmcgbGVuID0gZFt1XStkW3ZdLTIqZFtsXTsKCiAgICAgICAgaWYodzw9bGVuMSkKICAgICAgICB7CiAgICAgICAgICAgIGZvcihsb25nIGxvbmcgaT0wOyBpPExPRzsgaSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZigodz4+aSkmMSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB1PXBhclt1XVtpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb3V0IDw8IHUgPDwgIlxuIjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgaWYodz49bGVuKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0IDw8IHYgPDwgIlxuIjsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsb25nIGxvbmcgbmV3X3cgPSBsZW4tdzsKCiAgICAgICAgICAgIGZvcihsb25nIGxvbmcgaT0wOyBpPExPRzsgaSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZigobmV3X3c+PmkpJjEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdj1wYXJbdl1baV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvdXQgPDwgdiA8PCAiXG4iOwogICAgICAgIH0KICAgIH0KCn0KaW50IG1haW4oKQp7CiAgICBpbnB1dCgpOwogICAgc29sdmUoKTsKfQ==