Informática Iniciante Avançado

Brincando de consultas

Dabriel está brincando com seu array e por ser muito metódico pensou que sempre deveria saber qual a quantidade mínima de elementos que devem ser alterados para que um determinado subarray possua um valor $$W$$. Em outras palavras, ele deseja poder realizar duas operações no seu array, são elas:

1 – Alterar o valor do elemento da posição X para o valor W;

2 – Informar qual a quantidade mínima de elementos que precisam ser alterados do intervalo [X, Y] para que todos os elementos possuam o valor W.

Entrada

A primeira linha contém dois inteiros N e Q ($$1 \leq N, Q \leq 10^5$$), que representa quantos elementos possui o array e quantas consultas Dabriel irá realizar. A segunda linha contém $$N$$ inteiros $$X_i$$ ($$1 \leq X_i \leq 10^5$$) que indica o valor da $$i$$-ésima posição do array inicial. Nas próximas $$Q$$ linhas irão conter as consultas, podendo ser: $$1 \; X \; W$$ (1 ≤ XN, 1 ≤ W ≤ 105), indicando a operação de alteração e $$2 \; X \; Y \; W$$ (1 ≤ XYN, 1 ≤ W ≤ 105), indicando a operação de consulta.

Saída

Para cada operação do tipo 2, informe a quantidade de elementos que precisam ser alterados

Exemplos

ENTRADA

SAÍDA

4 4
1 2 3 4
2 1 2 2
2 1 2 3
1 2 1
2 1 2 2
1
2
2

Enviar solução: URI