Умный Бобер недавно спроектировал и построил нанотехнологичный инновационный универсальный инструмент массового обривания бобров — «Брабобрей-5000». Брабобрей-5000 умеет обривать бобров целыми семьями! Как он работает? Очень просто!
Имеется n бобров, каждый из них имеет уникальный номер от 1 до n. Рассмотрим перестановку a1, a2, ..., an этих n бобров. Брабобрей-5000 за один запуск может обрить бобров с номерами от x до y (включительно) тогда и только тогда, когда найдутся такие индексы i1 < i2 < ... < ik, что ai1 = x, ai2 = x + 1, ..., aik - 1 = y - 1, aik = y. И это действительно очень удобно. Например, перестановку бобров 1, 2, 3, ..., n можно обрить за один раз.
Если за один запуск обрить бобров с x по y нельзя, то можно найти такое разбиение на группы [x, p1], [p1 + 1, p2], ..., [pm + 1, y] (x ≤ p1 < p2 < ... < pm < y), что в каждой группе обрить бобров за один запуск можно. Но тогда потребуется m + 1 запусков Брабобрея-5000.
Все бобры взбалмошны, поэтому так и норовят поменяться местами. Поэтому, подходя к задаче более формально, можно рассматривать запросы двух видов:
Можно считать, что одного и того же бобра можно обривать сколь угодно много раз.
В первой строке задано целое число n — общее количество бобров, 2 ≤ n. Во второй строке записаны через пробел n целых чисел — исходная перестановка бобров.
В третьей строке задано целое число q — количество запросов, 1 ≤ q ≤ 105. В последующих q строках содержатся сами запросы. Каждый запрос i имеет вид pi xi yi, где pi — вид запроса (1 — обрить бобров с xi по yi включительно, 2 — поменять местами бобров, стоящих на позициях xi и yi). Для всех запросов выполняется: 1 ≤ xi < yi ≤ n.
Обратите внимание, что количество запросов q и в подзадаче B1, и в подзадаче B2 ограничено 1 ≤ q ≤ 105.
Для каждого запроса с pi = 1 выведите минимальное количество запусков Брабобрея-5000.
5
1 3 4 2 5
6
1 1 5
1 3 4
2 2 3
1 1 5
2 1 5
1 1 5
2
1
3
5
Название |
---|