#include <bits/stdc++.h>
using namespace std;
//
const int maxN = 7e4;
int N, Q, h[maxN] = {0}, up[maxN][20];
vector<int> edge[maxN];
//
void DFS (int u)
{
for (int v : edge[u])
{
if (v == up[u][0])
continue;
h[v] = h[u] + 1;
up[v][0] = u;
for (int i = 1; i < 20; ++i)
up[v][i] = up[up[v][i - 1]][i - 1];
DFS(v);
}
}
int LCA (int u, int v)
{
if (h[u] != h[v])
{
if (h[u] < h[v])
swap(u, v);
for (int k = h[u] - h[v], i = 0; 1 << i <= k; ++i)
if (k >> i & 1)
u = up[u][i];
}
if (u == v)
return u;
for (int i = __lg(h[u]); i >= 0; --i)
if (up[u][i] != up[v][i])
u = up[u][i], v = up[v][i];
return up[v][0];
}
//
struct Segment_Tree
{
int node[maxN << 1];
//
void build (void)
{
for (int i = 0; i < N; ++i)
node[i + N] = i;
for (int id = N - 1; id > 0; --id)
node[id] = LCA(node[id << 1], node[id << 1 | 1]);
}
int query (int l, int r)
{
int res = l;
//
for (l += N, r += N; l < r; l >>= 1, r >>= 1)
{
if (l & 1)
res = LCA(res, node[l++]);
if (r & 1)
res = LCA(res, node[--r]);
}
return res + 1;
}
} ST;
//
struct process
{
void input (void)
{
int u, v;
//
cin >> N >> Q;
for (int i = 1; i < N; ++i)
cin >> u >> v,
edge[--u].emplace_back(--v),
edge[v].emplace_back(u);
}
void solve (void)
{
DFS(0);
ST.build();
}
void output (void)
{
for (int u, v; Q--;)
cin >> u >> v,
cout << ST.query(--u, v) << '\n';
}
//
process (void)
{
input(), solve(), output();
}
};
//
signed main (void)
{
ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
process();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vCmNvbnN0IGludCBtYXhOID0gN2U0OwoKaW50IE4sIFEsIGhbbWF4Tl0gPSB7MH0sIHVwW21heE5dWzIwXTsKdmVjdG9yPGludD4gZWRnZVttYXhOXTsKLy8Kdm9pZCBERlMgKGludCB1KQp7CiAgICBmb3IgKGludCB2IDogZWRnZVt1XSkKICAgIHsKICAgICAgICBpZiAodiA9PSB1cFt1XVswXSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgaFt2XSA9IGhbdV0gKyAxOwogICAgICAgIHVwW3ZdWzBdID0gdTsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IDIwOyArK2kpCiAgICAgICAgICAgIHVwW3ZdW2ldID0gdXBbdXBbdl1baSAtIDFdXVtpIC0gMV07CiAgICAgICAgREZTKHYpOwogICAgfQp9CmludCBMQ0EgKGludCB1LCBpbnQgdikKewogICAgaWYgKGhbdV0gIT0gaFt2XSkKICAgIHsKICAgICAgICBpZiAoaFt1XSA8IGhbdl0pCiAgICAgICAgICAgIHN3YXAodSwgdik7CiAgICAgICAgZm9yIChpbnQgayA9IGhbdV0gLSBoW3ZdLCBpID0gMDsgMSA8PCBpIDw9IGs7ICsraSkKICAgICAgICAgICAgaWYgKGsgPj4gaSAmIDEpCiAgICAgICAgICAgICAgICB1ID0gdXBbdV1baV07CiAgICB9CiAgICBpZiAodSA9PSB2KQogICAgICAgIHJldHVybiB1OwogICAgZm9yIChpbnQgaSA9IF9fbGcoaFt1XSk7IGkgPj0gMDsgLS1pKQogICAgICAgIGlmICh1cFt1XVtpXSAhPSB1cFt2XVtpXSkKICAgICAgICAgICAgdSA9IHVwW3VdW2ldLCB2ID0gdXBbdl1baV07CiAgICByZXR1cm4gdXBbdl1bMF07Cn0KLy8Kc3RydWN0IFNlZ21lbnRfVHJlZQp7CiAgICBpbnQgbm9kZVttYXhOIDw8IDFdOwogICAgLy8KICAgIHZvaWQgYnVpbGQgKHZvaWQpCiAgICB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyArK2kpCiAgICAgICAgICAgIG5vZGVbaSArIE5dID0gaTsKICAgICAgICBmb3IgKGludCBpZCA9IE4gLSAxOyBpZCA+IDA7IC0taWQpCiAgICAgICAgICAgIG5vZGVbaWRdID0gTENBKG5vZGVbaWQgPDwgMV0sIG5vZGVbaWQgPDwgMSB8IDFdKTsKICAgIH0KICAgIGludCBxdWVyeSAoaW50IGwsIGludCByKQogICAgewogICAgICAgIGludCByZXMgPSBsOwogICAgICAgIC8vCiAgICAgICAgZm9yIChsICs9IE4sIHIgKz0gTjsgbCA8IHI7IGwgPj49IDEsIHIgPj49IDEpCiAgICAgICAgewogICAgICAgICAgICBpZiAobCAmIDEpCiAgICAgICAgICAgICAgICByZXMgPSBMQ0EocmVzLCBub2RlW2wrK10pOwogICAgICAgICAgICBpZiAociAmIDEpCiAgICAgICAgICAgICAgICByZXMgPSBMQ0EocmVzLCBub2RlWy0tcl0pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzICsgMTsKICAgIH0KfSBTVDsKLy8Kc3RydWN0IHByb2Nlc3MKewogICAgdm9pZCBpbnB1dCAodm9pZCkKICAgIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICAvLwogICAgICAgIGNpbiA+PiBOID4+IFE7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBOOyArK2kpCiAgICAgICAgICAgIGNpbiA+PiB1ID4+IHYsCiAgICAgICAgICAgIGVkZ2VbLS11XS5lbXBsYWNlX2JhY2soLS12KSwKICAgICAgICAgICAgZWRnZVt2XS5lbXBsYWNlX2JhY2sodSk7CiAgICB9CiAgICB2b2lkIHNvbHZlICh2b2lkKQogICAgewogICAgICAgIERGUygwKTsKICAgICAgICBTVC5idWlsZCgpOwogICAgfQogICAgdm9pZCBvdXRwdXQgKHZvaWQpCiAgICB7CiAgICAgICAgZm9yIChpbnQgdSwgdjsgUS0tOykKICAgICAgICAgICAgY2luID4+IHUgPj4gdiwKICAgICAgICAgICAgY291dCA8PCBTVC5xdWVyeSgtLXUsIHYpIDw8ICdcbic7CiAgICB9CiAgICAvLwogICAgcHJvY2VzcyAodm9pZCkKICAgIHsKICAgICAgICBpbnB1dCgpLCBzb2x2ZSgpLCBvdXRwdXQoKTsKICAgIH0KfTsKLy8Kc2lnbmVkIG1haW4gKHZvaWQpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKTsKICAgIHByb2Nlc3MoKTsKfQo=