#include <bits/stdc++.h>
#define FILENAME "MAIN"
#define ll long long
#define el cout << '\n'
#define ii pair<ll, ll>
#define fi first
#define se second
#define pb push_back
#define YES cout << "YES", el
#define NO cout << "NO", el
#define print_type cout
#define print_el print_type << '\n'
#define DEBUG(...) [](auto && ... x) {int i = 0; ((print_type << (i++ ? " " : "") << x), ...), print_el;} (__VA_ARGS__)
#define bit(mask, i) (((mask) >> (i)) & 1)
#define BIT(n) (1ll << (n))
using namespace std;
const bool is_brute = 0;
const bool multi_test = 0;
const int maxn = 2e5;
const int maxlog = 17;
int n, q, up[maxn + 10][maxlog + 10], tin[maxn + 10], tout[maxn + 10], timer = 0;
vector<int> adj[maxn + 10];
void DFS(int top)
{
tin[top] = ++timer;
for (int next_top : adj[top])
{
if (next_top == up[top][0])
continue;
up[next_top][0] = top;
DFS(next_top);
}
tout[top] = timer;
}
bool isAncestor(int x, int y)
{
if (x == 0)
return 1;
return tin[x] <= tin[y] && tin[y] <= tout[x];
}
int getLCA(int x, int y)
{
if (isAncestor(x, y))
return x;
if (isAncestor(y, x))
return y;
for (int i = maxlog; i >= 0; i--)
if (!isAncestor(up[x][i], y))
x = up[x][i];
return up[x][0];
}
void solve()
{
cin >> n >> q;
for (int i = 2; i <= n; i++)
{
int p;
cin >> p;
adj[p].push_back(i);
}
DFS(1);
for (int j = 1; j <= maxlog; j++)
for (int i = 1; i <= n; i++)
up[i][j] = up[up[i][j - 1]][j - 1];
while (q--)
{
int u, v;
cin >> u >> v;
cout << getLCA(u, v), el;
}
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen(FILENAME".INP", "r"))
{
freopen(FILENAME".INP", "r", stdin);
if (is_brute)
freopen(FILENAME"_TRAU.OUT", "w", stdout);
else
freopen(FILENAME".OUT", "w", stdout);
}
int ntest;
if (multi_test)
cin >> ntest;
else
ntest = 1;
for (int itest = 1; itest <= ntest; itest++)
{
// cout << itest, el;
solve();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIEZJTEVOQU1FICJNQUlOIgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBlbCBjb3V0IDw8ICdcbicKI2RlZmluZSBpaSBwYWlyPGxsLCBsbD4KI2RlZmluZSBmaSBmaXJzdCAKI2RlZmluZSBzZSBzZWNvbmQgCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgWUVTIGNvdXQgPDwgIllFUyIsIGVsCiNkZWZpbmUgTk8gY291dCA8PCAiTk8iLCBlbAojZGVmaW5lIHByaW50X3R5cGUgY291dAojZGVmaW5lIHByaW50X2VsIHByaW50X3R5cGUgPDwgJ1xuJwojZGVmaW5lIERFQlVHKC4uLikgW10oYXV0byAmJiAuLi4geCkge2ludCBpID0gMDsgKChwcmludF90eXBlIDw8IChpKysgPyAiICIgOiAiIikgPDwgeCksIC4uLiksIHByaW50X2VsO30gKF9fVkFfQVJHU19fKQojZGVmaW5lIGJpdChtYXNrLCBpKSAoKChtYXNrKSA+PiAoaSkpICYgMSkKI2RlZmluZSBCSVQobikgKDFsbCA8PCAobikpCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgYm9vbCBpc19icnV0ZSA9IDA7CmNvbnN0IGJvb2wgbXVsdGlfdGVzdCA9IDA7Cgpjb25zdCBpbnQgbWF4biA9IDJlNTsKY29uc3QgaW50IG1heGxvZyA9IDE3OwoKaW50IG4sIHEsIHVwW21heG4gKyAxMF1bbWF4bG9nICsgMTBdLCB0aW5bbWF4biArIDEwXSwgdG91dFttYXhuICsgMTBdLCB0aW1lciA9IDA7CnZlY3RvcjxpbnQ+IGFkalttYXhuICsgMTBdOwoKdm9pZCBERlMoaW50IHRvcCkKewogICAgdGluW3RvcF0gPSArK3RpbWVyOwogICAgZm9yIChpbnQgbmV4dF90b3AgOiBhZGpbdG9wXSkKICAgIHsKICAgICAgICBpZiAobmV4dF90b3AgPT0gdXBbdG9wXVswXSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgdXBbbmV4dF90b3BdWzBdID0gdG9wOwogICAgICAgIERGUyhuZXh0X3RvcCk7CiAgICB9CiAgICB0b3V0W3RvcF0gPSB0aW1lcjsKfQpib29sIGlzQW5jZXN0b3IoaW50IHgsIGludCB5KQp7CiAgICBpZiAoeCA9PSAwKQogICAgICAgIHJldHVybiAxOwogICAgcmV0dXJuIHRpblt4XSA8PSB0aW5beV0gJiYgdGluW3ldIDw9IHRvdXRbeF07Cn0KaW50IGdldExDQShpbnQgeCwgaW50IHkpCnsKICAgIGlmIChpc0FuY2VzdG9yKHgsIHkpKQogICAgICAgIHJldHVybiB4OwogICAgaWYgKGlzQW5jZXN0b3IoeSwgeCkpCiAgICAgICAgcmV0dXJuIHk7CiAgICBmb3IgKGludCBpID0gbWF4bG9nOyBpID49IDA7IGktLSkKICAgICAgICBpZiAoIWlzQW5jZXN0b3IodXBbeF1baV0sIHkpKQogICAgICAgICAgICB4ID0gdXBbeF1baV07CiAgICByZXR1cm4gdXBbeF1bMF07Cn0KCnZvaWQgc29sdmUoKQp7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIGludCBwOwogICAgICAgIGNpbiA+PiBwOwogICAgICAgIGFkaltwXS5wdXNoX2JhY2soaSk7CiAgICB9CiAgICBERlMoMSk7CiAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtYXhsb2c7IGorKykKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgICAgIHVwW2ldW2pdID0gdXBbdXBbaV1baiAtIDFdXVtqIC0gMV07CiAgICB3aGlsZSAocS0tKQogICAgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgY291dCA8PCBnZXRMQ0EodSwgdiksIGVsOwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgaWYgKGZvcGVuKEZJTEVOQU1FIi5JTlAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oRklMRU5BTUUiLklOUCIsICJyIiwgc3RkaW4pOwogICAgICAgIGlmIChpc19icnV0ZSkKICAgICAgICAgICAgZnJlb3BlbihGSUxFTkFNRSJfVFJBVS5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBmcmVvcGVuKEZJTEVOQU1FIi5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgaW50IG50ZXN0OwogICAgaWYgKG11bHRpX3Rlc3QpCiAgICAgICAgY2luID4+IG50ZXN0OwogICAgZWxzZQogICAgICAgIG50ZXN0ID0gMTsKICAgIGZvciAoaW50IGl0ZXN0ID0gMTsgaXRlc3QgPD0gbnRlc3Q7IGl0ZXN0KyspCiAgICB7CiAgICAgICAgLy8gY291dCA8PCBpdGVzdCwgZWw7CiAgICAgICAgc29sdmUoKTsKICAgIH0KfQ==