#include <bits/stdc++.h>
using namespace std;
vector<int>G[100005];
int anc[100005][20], dep[100005], n, cnt = 0;
int mx[100005 * 4], mn[100005 * 4], id[100005], s[100005];
void dfs(int u, int fa, int deep)
{
dep[u] = deep;
anc[u][0] = fa;
s[u] = ++cnt;
id[cnt] = u;
for (int i = 0; i < G[u].size(); i++) {
dfs(G[u][i], u, deep + 1);
}
}
void init()
{
for(int j = 1; j < 19; j++) {
for(int i = 1; i <= n; i++) {
anc[i][j] = anc[anc[i][j - 1]][j - 1];
}
}
}
int lca(int p,int q)
{
if (dep[p] < dep[q]) {
swap(p, q);
}
for (int i = 18; i >= 0; i--) {
if(dep[anc[p][i]] >= dep[q]) {
p=anc[p][i];
}
}
if (p == q) {
return dep[p] - 1;
}
for (int i = 18; i >= 0; i--) {
if (anc[p][i] != anc[q][i]) {
p = anc[p][i], q = anc[q][i];
}
}
return dep[anc[p][0]] - 1;
}
int qmax(int o,int l,int r,int ql,int qr)
{
if (l >= ql && r <= qr) {
return mx[o];
}
int ls = o * 2, rs = o * 2 + 1, m = (l + r) / 2, res = 0;
if (ql <= m) {
res = qmax(ls, l, m, ql, qr);
}
if (qr > m) {
res = max(res, qmax(rs, m + 1, r, ql, qr));
}
return res;
}
int qmin(int o,int l,int r,int ql,int qr)
{
if (l >= ql && r <= qr) {
return mn[o];
}
int ls = o * 2, rs = o * 2 + 1, m = (l + r) / 2, res = 1e8;
if (ql <= m) {
res = qmin(ls, l, m, ql, qr);
}
if (qr > m) {
res = min(res, qmin(rs, m + 1, r, ql, qr));
}
return res;
}
void up(int o, int l, int r, int k, int v)
{
if (l == r) {
mx[o] = mn[o] = v;
return;
}
int ls = o * 2, rs = o * 2 + 1, m = (l + r) / 2;
if (k <= m) {
up(ls, l, m, k, v);
}
else {
up(rs, m + 1, r, k, v);
}
mx[o] = max(mx[ls], mx[rs]);
mn[o] = min(mn[ls], mn[rs]);
}
int main() {
int q, x, l, r;
scanf("%d %d", &n, &q);
for (int i = 2; i <= n; i++) {
scanf("%d", &x);
G[x].push_back(i);
}
dfs(1, 0, 1);
init();
for(int i = 1; i <= n; i++) {
up(1, 1, n, i, s[i]);
}
while (q--) {
scanf("%d %d", &l, &r);
int la = qmin(1, 1, n, l, r);
int rb = qmax(1, 1, n, l, r);
up(1, 1, n, id[la], 1e8);
int a = qmin(1, 1, n, l, r);
up(1, 1, n, id[la], la);
up(1, 1, n, id[rb], 0);
int b = qmax(1, 1, n, l, r);
up(1, 1, n, id[rb], rb);
int t1 = lca(id[la], id[b]), t2 = lca(id[a], id[rb]);
if (t1 >= t2) {
printf("%d %d\n", id[rb], t1);
}
else {
printf("%d %d\n", id[la], t2);
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PkdbMTAwMDA1XTsKaW50IGFuY1sxMDAwMDVdWzIwXSwgZGVwWzEwMDAwNV0sIG4sIGNudCA9IDA7CmludCBteFsxMDAwMDUgKiA0XSwgbW5bMTAwMDA1ICogNF0sIGlkWzEwMDAwNV0sIHNbMTAwMDA1XTsKCnZvaWQgZGZzKGludCB1LCBpbnQgZmEsIGludCBkZWVwKQp7CiAgICBkZXBbdV0gPSBkZWVwOwogICAgYW5jW3VdWzBdID0gZmE7CiAgICBzW3VdID0gKytjbnQ7CiAgICBpZFtjbnRdID0gdTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgR1t1XS5zaXplKCk7IGkrKykgewogICAgICAgIGRmcyhHW3VdW2ldLCB1LCBkZWVwICsgMSk7CiAgICB9Cn0KCnZvaWQgaW5pdCgpCnsKICAgIGZvcihpbnQgaiA9IDE7IGogPCAxOTsgaisrKSB7CiAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgYW5jW2ldW2pdID0gYW5jW2FuY1tpXVtqIC0gMV1dW2ogLSAxXTsKICAgICAgICB9CiAgICB9Cn0KCmludCBsY2EoaW50IHAsaW50IHEpCnsKICAgIGlmIChkZXBbcF0gPCBkZXBbcV0pIHsKICAgICAgICBzd2FwKHAsIHEpOwogICAgfQogICAgZm9yIChpbnQgaSA9IDE4OyBpID49IDA7IGktLSkgewogICAgICAgIGlmKGRlcFthbmNbcF1baV1dID49IGRlcFtxXSkgewogICAgICAgICAgICBwPWFuY1twXVtpXTsKICAgICAgICB9CiAgICB9CiAgICBpZiAocCA9PSBxKSB7CiAgICAgICAgcmV0dXJuIGRlcFtwXSAtIDE7CiAgICB9CiAgICBmb3IgKGludCBpID0gMTg7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgaWYgKGFuY1twXVtpXSAhPSBhbmNbcV1baV0pIHsKICAgICAgICAgICAgcCA9IGFuY1twXVtpXSwgcSA9IGFuY1txXVtpXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZGVwW2FuY1twXVswXV0gLSAxOwp9CgppbnQgcW1heChpbnQgbyxpbnQgbCxpbnQgcixpbnQgcWwsaW50IHFyKQp7CiAgICBpZiAobCA+PSBxbCAmJiByIDw9IHFyKSB7CiAgICAgICAgcmV0dXJuIG14W29dOwogICAgfQogICAgaW50IGxzID0gbyAqIDIsIHJzID0gbyAqIDIgKyAxLCBtID0gKGwgKyByKSAvIDIsIHJlcyA9IDA7CiAgICBpZiAocWwgPD0gbSkgewogICAgICAgIHJlcyA9IHFtYXgobHMsIGwsIG0sIHFsLCBxcik7CiAgICB9CiAgICBpZiAocXIgPiBtKSB7CiAgICAgICAgcmVzID0gbWF4KHJlcywgcW1heChycywgbSArIDEsIHIsIHFsLCBxcikpOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKaW50IHFtaW4oaW50IG8saW50IGwsaW50IHIsaW50IHFsLGludCBxcikKewogICAgaWYgKGwgPj0gcWwgJiYgciA8PSBxcikgewogICAgICAgIHJldHVybiBtbltvXTsKICAgIH0KICAgIGludCBscyA9IG8gKiAyLCBycyA9IG8gKiAyICsgMSwgbSA9IChsICsgcikgLyAyLCByZXMgPSAxZTg7CiAgICBpZiAocWwgPD0gbSkgewogICAgICAgIHJlcyA9IHFtaW4obHMsIGwsIG0sIHFsLCBxcik7CiAgICB9CiAgICBpZiAocXIgPiBtKSB7CiAgICAgICAgcmVzID0gbWluKHJlcywgcW1pbihycywgbSArIDEsIHIsIHFsLCBxcikpOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKdm9pZCB1cChpbnQgbywgaW50IGwsIGludCByLCBpbnQgaywgaW50IHYpCnsKICAgIGlmIChsID09IHIpIHsKICAgICAgICBteFtvXSA9IG1uW29dID0gdjsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbHMgPSBvICogMiwgcnMgPSBvICogMiArIDEsIG0gPSAobCArIHIpIC8gMjsKICAgIGlmIChrIDw9IG0pIHsKICAgICAgICB1cChscywgbCwgbSwgaywgdik7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB1cChycywgbSArIDEsIHIsIGssIHYpOwogICAgfQogICAgbXhbb10gPSBtYXgobXhbbHNdLCBteFtyc10pOwogICAgbW5bb10gPSBtaW4obW5bbHNdLCBtbltyc10pOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBxLCB4LCBsLCByOwogICAgc2NhbmYoIiVkICVkIiwgJm4sICZxKTsKICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykgewogICAgICAgIHNjYW5mKCIlZCIsICZ4KTsKICAgICAgICBHW3hdLnB1c2hfYmFjayhpKTsKICAgIH0KICAgIGRmcygxLCAwLCAxKTsKICAgIGluaXQoKTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgdXAoMSwgMSwgbiwgaSwgc1tpXSk7CiAgICB9CiAgICB3aGlsZSAocS0tKSB7CiAgICAgICAgc2NhbmYoIiVkICVkIiwgJmwsICZyKTsKICAgICAgICBpbnQgbGEgPSBxbWluKDEsIDEsIG4sIGwsIHIpOwogICAgICAgIGludCByYiA9IHFtYXgoMSwgMSwgbiwgbCwgcik7CiAgICAgICAgdXAoMSwgMSwgbiwgaWRbbGFdLCAxZTgpOwogICAgICAgIGludCBhID0gcW1pbigxLCAxLCBuLCBsLCByKTsKICAgICAgICB1cCgxLCAxLCBuLCBpZFtsYV0sIGxhKTsKICAgICAgICB1cCgxLCAxLCBuLCBpZFtyYl0sIDApOwogICAgICAgIGludCBiID0gcW1heCgxLCAxLCBuLCBsLCByKTsKICAgICAgICB1cCgxLCAxLCBuLCBpZFtyYl0sIHJiKTsKICAgICAgICBpbnQgdDEgPSBsY2EoaWRbbGFdLCBpZFtiXSksIHQyID0gbGNhKGlkW2FdLCBpZFtyYl0pOwogICAgICAgIGlmICh0MSA+PSB0MikgewogICAgICAgICAgICBwcmludGYoIiVkICVkXG4iLCBpZFtyYl0sIHQxKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHByaW50ZigiJWQgJWRcbiIsIGlkW2xhXSwgdDIpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9