Дерево Штерна-Броко — это изящная конструкция, позволяющая построить множество всех неотрицательных дробей. Строится она с помощью бесконечного последовательного выполнения одной итерации. Пусть на нулевой итерации у нас будет массив из двух дробей:
(вторая величина, строго говоря, дробью не является; её можно понимать как несократимую дробь, обозначающую бесконечность).
Дальше на каждой следующей итерации берутся две соседние дроби a/b и c/d и вставляется между ними их медианта, то есть дробь a+c/b+d. Таким образом, на следующих итерациях получатся массивы:
[0/1, 1/2, 1/1, 2/1, 1/0]
[0/1, 1/3, 1/2, 2/3, 1/1, 3/2, 2/1, 3/1, 1/0]
Можно показать, что любое число, представимое в виде неотрицательной дроби, рано или поздно появится в этом массиве. А также никакая дробь не окажется в нём дважды. Давайте тогда для каждого числа запомним итерацию, после которой оно впервые появилось. Получается, после первой итерации появилась дробь 1/1, после второй — дроби 1/2 и 2/1, и так далее.
Осталось только привести определение самого дерева Штерна-Броко. В корне этого бесконечного дерева находится дробь 1/1, а слева и справа от дерева находятся дроби 0/1 и 1/0. Любая вершина дерева имеет двух сыновей, каждый из которых получается как медианта своего левого предка и правого предка. Получается, на глубине i этого дерева будут все те дроби, которые появились на i-й итерации:
У этого дерева есть множество замечательных свойств, но они нас сегодня не интересуют. Задача состоит в том, чтобы найти дробь, которая находится на глубине N и является M-й по счёту слева.
Исходные данные
В единственной строке даны два целых числа N и M — глубина и порядок слева необходимой дроби (1 ≤ N ≤ 109, 1 ≤ M ≤ min(2N−1, 109)).
Результат
Выведите числитель и знаменатель этой дроби через пробел.
Примеры
| исходные данные | результат |
|---|
1 1 | 1 1 |
3 3 | 3 2 |
5 7 | 5 7 |
Автор задачи: Вадим Баринов
Источник задачи: Вузовско-академическая олимпиада по информатике 2023