Динамічний масив#5311

Динамічний масив

15 секунд
256 мегабайтів
Середня

Потрібно реалізувати структуру даних, яка являє собою динамічний масив, який підтримує наступні операції:

  1. Присвоїти числу, яке стоїть на позиції , значення .

  2. Вставити число після позиції (але перед позицією u+1, якщо вона існує).

  3. Повідомити, скільки чисел, які не перевищують , стоїть на позиціях з по включно.

Елементи масиву нумеруються з одиниці.

Вхідні дані

У першому рядку знаходяться два натуральних числа та - початкова кількість елементів у масиві та кількість операцій (1 \leq n \leq 200000, 1 \leq m \leq 200000). У другому рядку знаходиться цілих чисел a_1, a_2, ..., a_n - елементи початкового масиву (0 \leq a_i \leq 10^6). Наступні рядків містять описи операцій у форматі

1 u p (u \geq 1, не перевищує поточного розміру масиву, 0 \leq p \leq 10^6),

2 u p (u \geq 0, не перевищує поточного розміру масиву, 0 \leq p \leq 10^6)

або

3 u v p (1 \leq u \leq v, не перевищує поточного розміру масиву, 0 \leq p \leq 10^6).

Вихідні дані

У вихідному файлі повинні знаходитись відповіді на запити - по одній у рядку.

Приклади

Приклад 1

Loading
Loading