Сидя на звонке по livecoding по теме «деревья», два программиста «Kanda Software» начали играть на бумажке в игру — рисовать деревья. Естественно, не зеленые с листьями, а графы.
Сначала взяли дерево из единственной вершины с номером $$$1$$$. Потом дорисовали к нему вершину с номером $$$2$$$ и соединили их ребром, получив второе дерево, и назвали вершину номер $$$2$$$ его корнем.
Затем договорились, что каждое последующее $$$n$$$-е дерево будет строиться из $$$(n - 1)$$$-го дерева по следующей процедуре:
После нескольких деревьев у них закончилось место на бумаге, и они решили вместо рисования заняться подсчетами и начали задавать друг другу задачи на вычисление характеристик своей последовательности деревьев.
Один загадывал два числа, $$$n$$$ и $$$v$$$, а второй должен был посчитать сумму номеров вершин на кратчайшем пути от корня $$$n$$$-го дерева до вершины $$$v$$$ (включая начальную и конечную вершину).
Тут Слава заметил их игру и предложил для лучшего усвоения материала вычислить требуемую сумму для достаточно больших значений $$$n$$$. Естественно, провести на бумажке столь сложные вычисления невозможно. Помогите им это сделать.
В первой строке даны два целых числа $$$n$$$ и $$$v$$$ $$$(1 \le v \le n \le 10^{18})$$$ — номер дерева и номер вершины в дереве, соответственно.
В единственной строке выведите целое число $$$S$$$ – сумму номеров вершин на кратчайшем пути от корня $$$n$$$-го дерева до вершины $$$v$$$ (включая начальную и конечную вершину).
Гарантируется, что $$$S$$$ не превышает $$$9 \cdot 10^{18}$$$.
2 1
3
3 2
5
6 1
12
9 6
23
![]() | ![]() |
$$$2$$$-е и $$$3$$$-е деревья соответственно.
![]() | ![]() |
$$$6$$$-е и $$$9$$$-е деревья соответственно.
Первый тестовый пример
Сумма номеров вершин на пути равна $$$2 + 1 = 3$$$.
Второй тестовый пример
Сумма номеров вершин на пути равна $$$3 + 2 = 5$$$.
Третий тестовый пример
Сумма номеров вершин на пути равна $$$6 + 5 + 1 = 12$$$.
Четвёртый тестовый пример
Сумма номеров вершин на пути равна $$$9 + 8 + 6 = 23$$$.