Есть массив $$$a$$$ из $$$2^{30}$$$ целых чисел, пронумерованных от $$$0$$$ до $$$2^{30}-1$$$. Изначально вы знаете, что $$$0 \leq a_i < 2^{30}$$$ ($$$0 \leq i < 2^{30}$$$), но вы не знаете эти числа. Ваша задача заключается в том, чтобы обработать все запросы двух видов:
Обратите внимание, что запросы в этой задаче закодированы, каждый следующий запрос вы сможете раскодировать, вычислив ответ на предыдущий.
Первая строка содержит одно целое число $$$q$$$ ($$$1 \leq q \leq 2 \cdot 10^5$$$) — количество запросов.
Каждая из следующих $$$q$$$ строк описывает запрос. Она содержит одно целое число $$$t$$$ ($$$1 \leq t \leq 2$$$) — тип запроса.
Запросы закодированы следующим образом: пусть $$$last$$$ будет ответом на последний запрос второго типа, на который вы ответили (сначала $$$last = 0$$$). Если ответ был $$$-1$$$, присвойте $$$last = 1$$$.
и, если $$$l > r$$$, поменяйте местами $$$l$$$ и $$$r$$$.
Это значит, что исключающее ИЛИ подмассива $$$[l, r]$$$ равно $$$x$$$ (обратите внимание, что вам нужно игнорировать запросы, которые противоречат предыдущим запросам).
и, если $$$l > r$$$, поменяйте местами $$$l$$$ и $$$r$$$.
Это значит, что нужно вывести исключающее ИЛИ подмассива $$$[l, r]$$$. Если невозможно ответить, то выведите $$$-1$$$. Не забудьте обновить значение $$$last$$$.
Гарантируется, что будет как минимум один запрос второго типа.
Для каждого запроса второго типа, выведите исключающее ИЛИ подмассива или $$$-1$$$, если на этот запрос невозможно ответить.
12
2 1 2
2 1 1073741822
1 0 3 4
2 0 0
2 3 3
2 0 3
1 6 7 3
2 4 4
1 0 2 1
2 0 0
2 4 4
2 0 0
-1
-1
-1
-1
5
-1
6
3
5
4
1 5 5 9
1 6 6 5
1 6 5 10
2 6 5
12
В первом примере, реальными запросами (перед кодированием) являются:
Во втором примере обратите внимание, что после двух запросов первого типа, уже известно, что $$$a_5 \oplus a_6 = 12$$$, значит третий запрос противоречит предыдущим двум, поэтому, ми его игнорируем.
Название |
---|