Задачі
Коди Грея
Коди Грея
Згенеруємо послідовність чисел у двійковій системі числення. Генерацію почнемо з послідовності
\begin{lstlisting}[language=C++]
0
1
-
\end{lstlisting}
Відобразимо послідовність симетрично відносно горизонтальної прямої, і припишемо ноль спереду до чисел першої половини та одиницю до чисел другої половини. Отримаємо
\begin{lstlisting}[language=C++]
00
01
11
10
\end{lstlisting}
Повторюючи процес ще раз, отримаємо $8$ чисел
\begin{lstlisting}[language=C++]
000 0
001 1
011 3
010 2
110 6
111 7
101 5
100 4
\end{lstlisting}
Відповідні десяткові числа для кожного згенерованого двійкового числа наведені справа.
Побудовані послідовності називаються відображеними кодами Грея відповідно для $1, 2$ та $3$ біт. Кодами Грея для $n$ біт називається послідовність з $2n$ різних $n$-бітових цілих чисел з тією властивістю, що будь-які дві сусідні послідовності відрізняються одна від одної лише в одному біті. Відображені коди Грея будуються як наведено вище.
\InputFile
Перший рядок містить кількість тестів $t~(t \le 250000)$. Кожний тест складається з одного рядка, який містить два цілі числа $n~(1 \le n \le 30)$ та $k~(0 \le k < 2^n)$.
\OutputFile
Для кожного тесту в окремому рідку вивести число в $k$-ій позиції $n$-бітових відображених кодів Грея.
Вхідні дані #1
14 1 0 1 1 2 0 2 1 2 2 2 3 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7
Вихідні дані #1
0 1 0 1 3 2 0 1 3 2 6 7 5 4