G2. На блоки (усложнённая версия)
ограничение по времени на тест
5 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Это сложная версия задачи. В данной версии $$$q \le 200\,000$$$.

Последовательность чисел называется хорошей, если элементы разбиты на блоки как в $$$[3, 3, 3, 4, 1, 1]$$$. Формально, если два элемента равны, то все элементы между ними должны быть тоже равны тому же значению.

Определим сложность последовательности как минимальное число элементов, которое нужно поменять, чтобы получить хорошую последовательность. Однако, если вы заменяете хотя бы один $$$x$$$ на какое-то значение $$$y$$$, нужно заменить все остальные значения $$$x$$$ на $$$y$$$ тоже. Например, для $$$[3, 3, 1, 3, 2, 1, 2]$$$ не разрешается поменять первую $$$1$$$ на $$$3$$$, а вторую $$$1$$$ на $$$2$$$. Вы можете или не заменять $$$1$$$ совсем, или заменить их все на что-то одно.

Вам дана последовательность целых чисел $$$a_1, a_2, \ldots, a_n$$$ и $$$q$$$ изменений.

Каждое изменение имеет вид «$$$i$$$ $$$x$$$» — заменить $$$a_i$$$ на $$$x$$$.

Выведите сложность изначальной последовательности и последовательности после каждого изменения. Обратите внимание, что изменения не независимы (изменение сохраняется на будущее).

Входные данные

Первая строка содержит целые числа $$$n$$$ и $$$q$$$ ($$$1 \le n \le 200\,000$$$, $$$0 \le q \le 200\,000$$$) — длина последовательности и число изменений.

Вторая строка содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \le a_i \le 200\,000$$$) — изначальную последовательность.

Каждая из следующих $$$q$$$ строк содержит целые числа $$$i_t$$$ и $$$x_t$$$ ($$$1 \le i_t \le n$$$, $$$1 \le x_t \le 200\,000$$$) — позицию и новое значение.

Выходные данные

Выведите $$$q+1$$$ целое число — ответ для изначальной последовательности и ответ после каждого изменения.

Пример
Входные данные
5 6
1 2 1 2 1
2 1
4 1
5 3
2 3
4 2
2 1
Выходные данные
2
1
0
0
2
3
0