Задачі
Спільний предок - 3
Спільний предок - 3
Підвішене дерево - это орієнтовний граф без циклів, у якому у кожну вершину, крім однієї, яка називається коренем орієнтовного дерева, входить одне ребро. У корінь орієнтиовного дерева не входить жодного ребра. Батьком вершини називається вершина, ребро з якої входить у дану (по матеріалам Wikipedia).
Задано набір підвішених дерев. Потрібно виконувати наступні операції:
\begin{enumerate}
\item \textbf{0 u v} - Для двох заданих вершин \textbf{u} та \textbf{v} вияснити, чи лежать вони у одному дереві. Якщо це так, вивести вершину, яка є їх найменшим спільним предком, інакше вивести \textbf{0}.
\item \textbf{1 u v} - Для корня \textbf{u} одного з дерев та довільної вершини \textbf{v} іншого дерева додати ребро (\textbf{v}, \textbf{u}). В результаті ці два дерева з'єднаються в одне.
\end{enumerate}
Вам необхідно виконувати усі операции \textit{online}, тобто, ви зможете взнати наступний запит, лише виконавши попередній.
\InputFile
У першому рядку вхідного файлу знаходиться число \textbf{n} - сумарна кількість вершин у розглядуваних деревах (\textbf{1} ≤ \textbf{n} ≤ \textbf{50000}). У наступному рядку розміжено \textbf{n} чисел - предок кожної вершини у початковій конфігурації, або \textbf{0}, якщо відповідна вершина є коренем. Потім йде число \textbf{k} - кількість запитів у вашій програмі (\textbf{1} ≤ \textbf{k} ≤ \textbf{100000}). Кожен з наступних рядків містить по три цілих числа: вид запиту (\textbf{0} - для пошуку LCA або \textbf{1} - для додавання ребра) і два числа \textbf{x}, \textbf{y}. Вершини, які приймають участь у запиті, можна обчислити за наступними формулами: \textbf{u = (x - 1 + ans) mod n + 1}, \textbf{v = (y - 1 + ans) mod n + 1}, де \textbf{ans} - відповідь на останній запит типу \textbf{0}.
\OutputFile
Для кожного запиту типу \textbf{0}, виведіть у вихідний файл одне число у окремому рядку - відповідь на цей запит.
Вхідні дані #1
5 0 0 0 0 0 12 1 5 3 0 2 5 1 4 2 1 1 5 0 1 5 1 3 4 0 1 5 0 3 1 0 4 2 0 1 4 0 5 2 0 4 1
Вихідні дані #1
0 5 5 3 2 3 3 2
Вхідні дані #2
10 0 1 7 8 1 5 5 7 0 1 8 1 9 5 0 6 7 0 10 8 0 1 5 0 2 4 0 2 9 0 9 3 0 10 3
Вихідні дані #2
5 5 1 5 7 1 1