РСОП XXXV 2023 34

N. НАЙ-БЛИЗЪК ОБЩ ПРЕДШЕСТВЕНИК 213

Условие


N. Най-близък общ предшественик 
---
Дадено е кореново дърво с n (1 ≤ n ≤ 100000) върха, номерирани с целите числа от 0 до n-1. Трябва да се отговори на m заявки за намиране на най-близкия общ предшественик на два върха.
 
Заявките се генерират по следния начин. Дадени са целите числа a1,a2 и числата x,y,z. Числата a3,a4,…,a2m се генерират по следния начин:  ai=(x.ai-2+y.ai-1+z)mod n. Първата заявка е за върховете (a1,a2). Ако отговора на (i-1)-вия въпрос е v, то i-тия въпрос е от вида ((a2i-1+v)mod n, a2i).  

Вход: Входът се състои от няколко набора входни данни. Всеки набор от входни данни има следния вид. Първо са дадени целите числа n и m. Корен на дървото е връх 0. Следва един ред с n-1 числа, като i-тото от тях е номера на предшественика на върха i. Следва един ред с целите числа a1 и a2 (0 ≤ a1,a2 ≤ n-1). Следващият ред съдържа три цели числа x,y,z (0 ≤ x,y,z ≤ 109). 

Изход: За всеки набор от входни данни изведете на отделен ред едно цяло число – сумата от отговорите на всички заявки за съответния набор от данни.
 
Примерен вход: 
3 2
0 1
2 1
1 1 0

Примерен изход:
2