В компьютерную игру <<Экспедиция на Сириус>> играют n игроков, пронумерованных от 1 до n. За предыдущие миссии у игрока номер i накоплено c_i единиц опыта. Будем говорить, что два игрока имеют одинаковый уровень, если у них одинаковое значение опыта. Игрок, который имеет больше опыта, имеет более высокий уровень.
Игра состоит из нескольких раундов. В конце каждого раунда каждому игроку добавляется опыт, равный количеству различных более высоких уровней у остальных игроков. Например, если значения опыта игроков \[2,5,5,1,2,10], то опыт первого игрока увеличится на 2: существует два более высоких уровня --- игроки с опытом 5 и игрок с опытом 10. Опыт последнего игрока в этом примере не увеличится. Опыт игроков изменяется одновременно. То есть в конце раунда в нашем примере опыт игроков станет равным \[4,6,6,4,4,10].
Вам требуется ответить на несколько вопросов. Каждый вопрос может быть одного из трех типов:
В первой строке даны два целых числа n и q (1≤n,q≤300,000) --- количество игроков и количество вопросов, на которые вам нужно ответить.
Во второй строке даны n целых чисел c_i (0≤c_i≤1012) --- количество единиц опыта у каждого из игроков в начале текущей игры.
В следующих q строках даны описания вопросов. Каждая строка начинается с целого числа t (t∈1,2,3), которое обозначает тип вопроса.
Во всех вопросах k=0 означает момент начала игры до проведения первого раунда.
Для каждого вопроса выведите ответ на него в новой строке.
В первом тесте опыт игроков изменяется следующим образом:
| Раунд | c_1 | c_2 | c_3 | c_4 | c_5 | c_6 |
|---|---|---|---|---|---|---|
| начало игры | 5 | 4 | 4 | 2 | 2 | 2 |
| 1 | 5 | 5 | 5 | 4 | 4 | 4 |
| 2 | 5 | 5 | 5 | 5 | 5 | 5 |
Во втором тесте опыт игроков изменяется следующим образом:
| Раунд | c_1 | c_2 | c_3 | c_4 | c_5 |
|---|---|---|---|---|---|
| начало игры | 0 | 3 | 5 | 4 | 2 |
| 1 | 4 | 5 | 5 | 5 | 5 |