EduBrick

F. Код Грея

1000 мс · 256 МБ · всё или ничего

Код Грея — это нумерация двоичных строк, при которой соседние номера отличаются ровно одним битом. Стандартный код Грея задаётся формулой

g(x)=x⊕⌊x/2⌋.g(x) = x \oplus \lfloor x / 2 \rfloor.

Отвечайте на запросы двух видов: по номеру xx выдать g(x)g(x) и по значению yy выдать такое xx, что g(x)=yg(x) = y.

Формат ввода

В первой строке qq (1≤q≤1051 \le q \le 10^5). В каждой из следующих qq строк — тип запроса и число: 1 x (выдать g(x)g(x)) или 2 y (выдать xx по g(x)=yg(x) = y). Оба числа лежат в пределах от 00 до 260−12^{60} - 1.

Формат вывода

Для каждого запроса выведите одно число в отдельной строке.

Примеры

ввод
2
1 0
2 0
вывод
0
0
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.