Жанез любить апельсини! Тому він створив сканер для апельсинів. За допомогою камери та комп'ютера 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
Приклад 2