\textit{Автор задачи: Егор Юлин, разработчик: Иван Пашков}
\vspace{0.2em}

Заметим, что если при массиве $a_1, a_2, \ldots, a_n$ для некоторого элемента $a_i$ выполняется, что $\mathtt{xor}(a_1, a_2, \ldots, a_{i-1})$ равняется $\mathtt{xor}(a_{i+1}, a_{i+2}, \ldots, a_n)$, то суммарный $\mathtt{xor}(a_1, a_2, \ldots, a_n)$ массива равняется $a_i$ (потому что \textbf{xor} префикса равняется \textbf{xor} суффикса, а значит их суммарный xor равен $0$ по свойству \textbf{xor}).

Таким образом, чтобы вычислить ответ для текущего массива, нужно понять, сколько элементов в массиве в точности равняется  xor всего массива.

Для этого будем поддерживать количество элементов для каждого значения с помощью какого-нибудь словаря, например, с помощью \texttt{std::unordered\_map\textless int, int\textgreater} в C++ или \texttt{java.util.HashMap\textless Integer, Integer\textgreater} в Java.

Будем также поддерживать суммарный \textbf{xor} массива. Как пересчитывать? Пусть до замены элемента суммарный \textbf{xor} элементов равняется $\mathtt{sum}$, старое значение элемента равняется $\mathtt{old\_value}$, новое равняется $\mathtt{new\_value}$. При замене элемента новый суммарный \textbf{xor} массива равняется $\mathtt{sum} \oplus \mathtt{old\_value} \oplus \mathtt{new\_value}$.

Итоговый алгоритм: 
\begin{enumerate}
    \item В самом начале инициализируем словарь всеми значениями и считаем суммарный \textbf{xor} массива.
    \item При запросе первого типа пересчитываем суммарный \textbf{xor} массива и обновляем данные в словаре;
    \item При запросе второго типа получаем из словаря и выводим количество значений, которые равняются суммарному \textbf{xor} всех элементов.
\end{enumerate}