Із XOR з любов'ю#11546

Із XOR з любов'ю

2 секунди
128 мегабайтів
Дуже складна

Знову XOR, знову запити, знову дерево — романтика (с) Ануар Серіков

Де XOR немає місця словам. Отже, давайте рухатися далі до задачі.

У вас є кореневе дерево з вершинами, пронумерованими від до . Кожна вершина має певне значення. Вершина є коренем дерева.

Вам потрібно обробити запитів двох типів:

Вхідні дані

Перший рядок містить два цілі числа n~(1 \le n \le 3*10^4) — кількість вершин у дереві, і (1 \le q \le 3*10^4) — кількість запитів.

Другий рядок містить послідовність з цілих чисел a_1, a_2, \dots, a_n~(0 \le a_i < 2^{20}) — значення, записані на вершинах.

Далі йдуть n - 1 рядок, що описує ребра дерева. Кожний рядок містить пару цілих чисел x_i, y_i~(1 \leq x_i, y_i \leq n, x_i \ne y_i) — вершини, з'єднані ребром. Гарантовано, що граф є зв'язним деревом.

Останні рядків описують запити. Перше число в -му рядку type_i — тип -го запиту. Якщо type_i = 1, то слідують два цілі числа v_i і x_i~(1 \le v_i \le n, 0 \le x_i < 2^{20}), інакше слідують два цілі числа u_i і v_i~(1 \le u_i, v_i \le n). Всі вхідні числа є цілими.

Вихідні дані

Для кожного запиту 2-го типу виведіть в окремому рядку одне ціле число — відповідь на запит.

Приклади

— виключаюче OR, наприклад 3 \oplus 5 = 6.

Приклад 1

Loading
Loading