Інноваційна вішалка#9046

Інноваційна вішалка

1 секунда
64 мегабайти
Дуже легка

Інноваційна вішалка складається з рівнів, що складаються із зв'язаних між собою стрижнів. Рівень (при i = [0, n-1]) складається з 2^i горизонтальних стрижнів.

Середина стрижня на рівні прикріплена до стіни. На інших рівнях середина -го (при j= [1, 2^i]) стрижня прикріплена до лівої частини -го стрижня (округлення вгору при діленні на ) попереднього рівня при непарному , або до правої частини того ж стрижня при парному . На обох кінцях кожного стрижня на останньому рівні висять гачки для одягу. Гачки пронумеровані зліва направо числами від до 2^n. Наприклад, вішалка при = виглядає так:

Маша хоче повісити усі свої куртки на свою нову вішалку. Вага кожної куртки дорівнює одиниці. Щоб не зламати тендітну конструкцію, вона повинна вішати куртки в такому порядку, щоб різниця між загальною вагою на лівому кінці будь-якого стрижня і загальною вагою на правому кінці того ж стрижня після додавання чергової куртки дорівнювала або . (За законами фізики різниця може бути рівна і , проте Маша вважає перекіс у правий бік жахливим.) Стрижні такі тонкі, що їх вагою можна знехтувати. Маша чула про ваш професіоналізм і просить вашої допомоги. Напишіть програму, яка за заданими і знаходить номер гачка по модулю 10^9+7, на який Маша повинна повісити куртку на -му кроці.

Вхідні дані

На єдиному рядку задано два цілих числа (1 \le n \le 10^6) і (1 \le k \le min(2^n, 10^{18})).

Вихідні дані

Виведіть одне ціле число - номер гачка, на який Маша повинна повісити куртку на -му кроці по модулю 10^9+7.

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Примітка

У першому прикладі гачки мають бути використані в наступному порядку: , , , , , , , . На другому кроці Маша має повісити свою куртку на гачок номер .

У другому прикладі порядок використання гачків такий: , , , , , , , , , і т.д.