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