#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
vector<int> tin, tout;
vector<pair<vector<int>, int>> g;
vector<vector<int>> up;
int l;
int t;
void dfs(int v, int p) {
tin[v] = t++;
up[v][0] = p;
for (int i = 1; i <= l; ++i)
up[v][i] = up[up[v][i - 1]][i - 1];
for(int i = 0; i < g[v].first.size(); ++i)
dfs(g[v].first[i], v);
tout[v] = t++;
}
int lca (int a, int b) {
if (tin[a] <= tin[b] && tout[a] >= tout[b]) return a;
if (tin[a] >= tin[b] && tout[a] <= tout[b]) return b;
for (int i = l; i >= 0; --i)
if (tin[up[a][i]] < tin[b] && tout[up[a][i]] > tout[b])
a = up[a][i];
return up[a][0];
}
int main() {
int n, h, v; cin >> n;
l = log2(n * 2 - 1);
tin.resize(n);
tout.resize(n);
g.resize(n); up.resize(n, vector <int> (l));
for(int i = 0; i < n; ++i) {
cin >> h;
if(h != 0)
g[h - 1].first.push_back(i);
else
v = i;
}
dfs(v, 0);
cin >> n;
for(int i = 0; i < n; ++i) {
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiB0aW4sIHRvdXQ7CnZlY3RvcjxwYWlyPHZlY3RvcjxpbnQ+LCBpbnQ+PiBnOwp2ZWN0b3I8dmVjdG9yPGludD4+IHVwOwppbnQgbDsKCmludCB0Owp2b2lkIGRmcyhpbnQgdiwgaW50IHApIHsKCXRpblt2XSA9IHQrKzsKCXVwW3ZdWzBdID0gcDsKCWZvciAoaW50IGkgPSAxOyBpIDw9IGw7ICsraSkKCQl1cFt2XVtpXSA9IHVwW3VwW3ZdW2kgLSAxXV1baSAtIDFdOwoJZm9yKGludCBpID0gMDsgaSA8IGdbdl0uZmlyc3Quc2l6ZSgpOyArK2kpCgkJZGZzKGdbdl0uZmlyc3RbaV0sIHYpOwoJdG91dFt2XSA9IHQrKzsKfQoKCmludCBsY2EgKGludCBhLCBpbnQgYikgewoJaWYgKHRpblthXSA8PSB0aW5bYl0gJiYgdG91dFthXSA+PSB0b3V0W2JdKSByZXR1cm4gYTsKCWlmICh0aW5bYV0gPj0gdGluW2JdICYmIHRvdXRbYV0gPD0gdG91dFtiXSkgcmV0dXJuIGI7CgkKCWZvciAoaW50IGkgPSBsOyBpID49IDA7IC0taSkKCQlpZiAodGluW3VwW2FdW2ldXSA8IHRpbltiXSAmJiB0b3V0W3VwW2FdW2ldXSA+IHRvdXRbYl0pCgkJCWEgPSB1cFthXVtpXTsKCXJldHVybiB1cFthXVswXTsKfQoKCmludCBtYWluKCkgewoJaW50IG4sIGgsIHY7IGNpbiA+PiBuOwoJbCA9IGxvZzIobiAqIDIgLSAxKTsKCXRpbi5yZXNpemUobik7Cgl0b3V0LnJlc2l6ZShuKTsKCWcucmVzaXplKG4pOyB1cC5yZXNpemUobiwgdmVjdG9yIDxpbnQ+IChsKSk7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJY2luID4+IGg7CgkJaWYoaCAhPSAwKQoJCQlnW2ggLSAxXS5maXJzdC5wdXNoX2JhY2soaSk7CgkJZWxzZQoJCQl2ID0gaTsKCX0KCWRmcyh2LCAwKTsKCQoJY2luID4+IG47Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJCgl9CglyZXR1cm4gMDsKfQ==