| rnd HLD group |
|---|
| Открытая |
| Зритель |
| rnd HLD |
|---|
| Закончено |
Изначально вам дано дерево, состоящее из одной корневой вершины с номером $$$1$$$. В этой вершине записано целое число $$$a_1$$$.
Вам предстоит обрабатывать поступающие запросы, которые могут быть одного из трех типов. Обратите внимание, что задача решается в онлайн-режиме. Параметры запросов, которые вам даются во входных данных, зашифрованы.
Пусть $$$last$$$ — ответ на последний запрос 3-го типа. Изначально $$$last = 0$$$. Если в ответ на запрос 3-го типа не было найдено подходящего числа (выведено -1), то значение $$$last$$$ становится равным $$$0$$$.
Для декодирования параметров очередного запроса используются следующие формулы, где $$$V$$$ — текущее количество вершин в дереве до выполнения запроса:
Здесь $$$\oplus$$$ обозначает операцию побитового исключающего ИЛИ (XOR в C++).
В первой строке входных данных заданы два целых числа $$$a_1$$$ и $$$q$$$ ($$$1 \le a_1 \le 10^9$$$, $$$1 \le q \le 5 \cdot 10^5$$$) — значение, записанное в корневой вершине, и количество запросов.
В следующих $$$q$$$ строках заданы описания запросов в зашифрованном формате, описанном в условии.
Гарантируется, что после расшифровки все параметры будут корректными: $$$1 \le p, v, u \le V$$$, а все значения $$$a$$$ и $$$x$$$ будут лежать в пределах от $$$1$$$ до $$$10^9$$$.
Для каждого запроса третьего типа выведите в отдельной строке одно целое число — минимальное значение на пути, которое строго больше расшифрованного $$$x$$$. Если такого числа на пути не существует, выведите -1.
5 61 0 11 1 73 0 2 22 4 63 5 7 73 4 6 3
5 4 -1
| Название |
|---|


