EduBrick

B. Предок

3000 мс · 256 МБ · всё или ничего

Дано дерево, заданное родителями. Для каждого запроса (a,b)(a, b) определите, является ли вершина aa предком вершины bb.

Наивно на запрос — подниматься от bb к корню, и это O(nm)O(nm): на 10510^5 вершин и 10510^5 запросов не пройдёт. Один обход даёт ответ за константу на запрос:

a — предок b  ⟺  tin[a]<tin[b] и tout[a]>tout[b].a \text{ — предок } b \iff tin[a] < tin[b] \text{ и } tout[a] > tout[b].

Вершина не считается предком самой себя. Обход запускайте из корня, детей перебирайте по возрастанию номера — впрочем, на ответ это уже не влияет.

Формат ввода

Первая строка содержит число nn (1≤n≤1051 \le n \le 10^5).

Во второй строке nn чисел: родитель ii-й вершины или 00, если вершина — корень. Корень ровно один.

Третья строка содержит число mm (1≤m≤1051 \le m \le 10^5), далее mm строк с парами различных aa и bb.

Формат вывода

Для каждого запроса — строка с числом 11 или 00.

Примеры

ввод
6
0 1 1 2 3 3
5
4 1
1 4
3 6
2 6
6 5
вывод
0
1
1
0
0
Войдите, чтобы отправлять решения.