XORanges
Жанез любить апельсини! Тому він створив сканер для апельсинів. За допомогою камери та комп’ютера Raspberry Pi 3b+ він почав створювати 3D-зображення апельсинів. Його процесор зображень не дуже хороший, тому єдиний вихід, який він отримує, — це -бітне ціле число, яке містить інформацію про дірки на шкірці. -бітне ціле число представлено у вигляді послідовності з цифр (бітів), кожна з яких є одиницею або нулем. Якщо почати з , ми можемо отримати число, додаючи для кожного -го біта, рівного одиниці. Більш формально, число представлено послідовністю , коли . Наприклад, представлено як .
Жанез відсканував апельсинів; однак іноді він вирішує пересканувати один з апельсинів (-й апельсин) під час виконання вашої програми. Це означає, що, починаючи з цього сканування, він використовує оновлене значення для -го апельсина.
Жанез хоче проаналізувати ці апельсини. Він знаходить операцію виключного АБО (XOR) дуже цікавою, тому вирішує зробити деякі обчислення. Він вибирає діапазон апельсинів від до (де ) і хоче дізнатися значення XOR всіх елементів у цьому діапазоні, всіх пар послідовних елементів у цьому діапазоні, всіх послідовностей з послідовних елементів і так далі, аж до послідовності з послідовних елементів (усіх елементів у діапазоні).
Якщо і , і є масив відсканованих значень , програма повинна повернути значення , де представляє операцію XOR, а представляє -й елемент у масиві .
Визначимо операцію XOR як:
Якщо -й біт першого значення збігається з -м бітом другого значення, то -й біт результату дорівнює ;
Якщо -й біт першого значення відрізняється від -го біта другого значення, то -й біт результату дорівнює .
Наприклад, .
Вхідні дані
У першому рядку знаходяться позитивні цілі числа і (загальна кількість пересканувань і запитів — дій).
У наступному рядку знаходяться невід’ємних цілих чисел, які представляють значення масиву (результати сканування апельсинів). Елемент містить значення для -го апельсина. Індекс починається з .
Дії описані в наступних рядках з трьома позитивними цілими числами.
Якщо тип дії (пересканування), перше ціле число дорівнює , за ним слідує (індекс апельсина, який Жанез хоче пересканувати) і (результат пересканування -го апельсина).
Якщо тип дії (запит), перше ціле число дорівнює , за ним слідують і .
Вихідні дані
Виведіть для кожного запиту одне ціле число в окремому рядку. Зверніть увагу, що -й рядок виводу повинен відповідати результату -го запиту.
Приклади
Пояснення до прикладу 1.
Спочатку . Перший запит охоплює весь діапазон. Результатом буде значення .
Потім значення першого апельсина оновлюється до . Це призводить до зміни результату для того ж запиту (на діапазоні ): .