XORanges#9045

XORanges

1 секунда
128 мегабайтів
Складна

Жанез любить апельсини! Тому він створив сканер для апельсинів. За допомогою камери та комп'ютера Raspberry Pi 3b+ він почав створювати 3D-зображення апельсинів. Його процесор зображень не дуже хороший, тому єдиний вихід, який він отримує, — це -бітне ціле число, яке містить інформацію про дірки на шкірці. -бітне ціле число представлено у вигляді послідовності з цифр (бітів), кожна з яких є одиницею або нулем. Якщо почати з , ми можемо отримати число, додаючи 2^i для кожного -го біта, рівного одиниці. Більш формально, число представлено послідовністю d_{31}, d_{30}, ..., d_0, коли D = d_{31} \cdot 2^{31} + d_{30} \cdot 2^{30} + ... + d_1 \cdot 2^1 + d_0 \cdot 2^0. Наприклад, представлено як 0, ..., 0, 1, 1, 0, 1.

Жанез відсканував апельсинів; однак іноді він вирішує пересканувати один з апельсинів (-й апельсин) під час виконання вашої програми. Це означає, що, починаючи з цього сканування, він використовує оновлене значення для -го апельсина.

Жанез хоче проаналізувати ці апельсини. Він знаходить операцію виключного АБО (XOR) дуже цікавою, тому вирішує зробити деякі обчислення. Він вибирає діапазон апельсинів від до (де l \le u) і хоче дізнатися значення XOR всіх елементів у цьому діапазоні, всіх пар послідовних елементів у цьому діапазоні, всіх послідовностей з послідовних елементів і так далі, аж до послідовності з u - l + 1 послідовних елементів (усіх елементів у діапазоні).

Якщо l = 2 і u = 4, і є масив відсканованих значень , програма повинна повернути значення a_2 \oplus a_3 \oplus a_4 \oplus (a_2 \oplus a_3) \oplus (a_3 \oplus a_4) \oplus (a_2 \oplus a_3 \oplus a_4), де представляє операцію XOR, а a_i представляє -й елемент у масиві .

Визначимо операцію XOR як:

Наприклад, 13 \oplus 23 = 26.

Вхідні дані

У першому рядку знаходяться додатні цілі числа і q~(0 < n, q \le 2 \cdot 10^5) (загальна кількість пересканувань і запитів — дій).

У наступному рядку знаходяться невід'ємних цілих чисел, які представляють значення масиву (результати сканування апельсинів). Елемент a_i~(a_i \le 10^9) містить значення для -го апельсина. Індекс починається з .

Дії описані в наступних рядках з трьома додатними цілими числами.

Якщо тип дії (пересканування), перше ціле число дорівнює , за ним слідує (індекс апельсина, який Жанез хоче пересканувати) і (результат пересканування -го апельсина).

Якщо тип дії (запит), перше ціле число дорівнює , за ним слідують і .

Вихідні дані

Виведіть для кожного запиту одне ціле число в окремому рядку. Зверніть увагу, що -й рядок виводу повинен відповідати результату -го запиту.

Приклади

Пояснення до прикладу 1.

Спочатку A = [1, 2, 3]. Перший запит охоплює весь діапазон. Результатом буде значення 1 \oplus 2 \oplus 3 \oplus (1 \oplus 2) \oplus (2 \oplus 3) \oplus (1 \oplus 2 \oplus 3) = 2.

Потім значення першого апельсина оновлюється до . Це призводить до зміни результату для того ж запиту (на діапазоні ): 3 \oplus 2 \oplus 3 \oplus (3 \oplus 2) \oplus (2 \oplus 3) \oplus (3 \oplus 2 \oplus 3) = 0.

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading