Особливий граф
Дано орієнтований граф із n вершинами, де з кожної вершини виходить не більше одного ребра. Ваше завдання — обробляти два типи запитів:
1 a - видалити ребро, що виходить з вершини a. Гарантується, що неіснуюче ребро не буде видалено (1 ≤ a ≤ n).
2 a b - вивести найкоротшу відстань від вершини a до вершини b, якщо така існує; в іншому випадку вивести -1 без лапок (1 ≤ a, b ≤ n).
Вхідні дані
У першому рядку задано натуральне число n (n ≤ 10^5
) — кількість вершин у графі. У наступному рядку наведено n цілих чисел, де i-те число next[i]
(0 ≤ next[i]
≤ n) вказує на вершину, в яку веде ребро з вершини i. Якщо next[i]
= 0, це означає, що з вершини i немає ребра. У третьому рядку задано число m (m ≤ 10^5
) — кількість запитів. У наступних m рядках наведено запити, що відповідають опису в умові.
Вихідні дані
Для кожного запиту типу 2 a b виведіть відповідь у новому рядку, у тому порядку, в якому задані запити.