EduBrick

B. Наименьший общий предок

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

Дано подвешенное дерево. Требуется ответить на mm запросов о наименьшем общем предке пары вершин.

Запросы не даны в явном виде: их слишком много, чтобы поместить в файл. Они порождаются формулой, и первое число очередного запроса зависит от ответа на предыдущий — значит отвечать надо по одному, в порядке поступления, и отложить всё на потом нельзя.

Формат ввода

В первой строке nn и mm (1≤n≤1051 \le n \le 10^5, 1≤m≤1061 \le m \le 10^6). Корень имеет номер 00.

Во второй строке n−1n-1 целых чисел: ii-е равно номеру родителя вершины ii.

В третьей строке два числа a1a_1 и a2a_2 из диапазона от 00 до n−1n-1. В четвёртой строке три числа xx, yy, zz (0≤x,y,z≤1090 \le x, y, z \le 10^9).

Числа a3,…,a2ma_3, \ldots, a_{2m} порождаются правилом ai=(x⋅ai−2+y⋅ai−1+z) mod na_i = (x \cdot a_{i-2} + y \cdot a_{i-1} + z) \bmod n. Первый запрос — пара (a1,a2)(a_1, a_2). Если ответ на (i−1)(i-1)-й запрос равен vv, то ii-й запрос — пара ((a2i−1+v) mod n, a2i)\bigl((a_{2i-1} + v) \bmod n,\ a_{2i}\bigr).

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

Выведите одно число — сумму номеров вершин, оказавшихся ответами на все запросы.

Примеры

ввод
3 2
0 1
2 1
1 1 0
вывод
2
ввод
1 2

0 0
1 1 1
вывод
0
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.