Плохой Treap
Treap, известное как декартово дерево, представляет собой структуру данных, которая хранит набор ключей в бинарном дереве поиска.
Каждая вершина дерева характеризуется парой .
значения вершин — значения сохраненных ключей. Они удовлетворяют правилу "поиска в бинарном дереве": все значения левого поддерева меньше значения в корне, а все значения правого поддерева больше значения в корне.
значения вершин удовлетворяют правилу "кучи": значение вершины меньше или равно значению родителя.
значение для каждого созданного узла обычно выбирается случайным образом в соответствии с некоторым распределением. Это приводит к хорошей средней временной сложности многих операций.
Поскольку эта структура данных объединяет некоторые свойства двоичного дерева поиска и кучи, ее имя является термином "portmanteau", состоящим из двух слов: TRee + hEAP = TREAP.
Бенджамин решил, что недетерминизм в процедуре выбора значения является плохим, поскольку в этом случае время выполнения запросов различно. Он решил рассчитать для каждого узла детерминировано на основе его значения . Он выбрал правило . Бенджамин особенно рад, что различные целые числа всегда будут давать различные .
Барбара понимает, что хотя недетерминированное декартово дерево показывает худшую производительность, когда предоставляется "плохая" случайная последовательность, детерминированное декартово дерево показывает худшую производительность, когда предоставляется "плохой" набор ключей. Она хочет объяснить это Бенджамину, показав ему целочисленных ключей, которые, будучи сохраненными в его структуре данных, сформируют дерево высоты — "наиболее несбалансированную" возможную ситуацию.
Помогите Барбаре предоставить таких ключей. Все эти ключи должны помещаться в - битовый знаковый тип.
Входные данные
Одно целое число .
Выходные данные
Выведите строк содержащих различные целочисленные ключи. Все ключи должны лежать в интервале между и включительно. Декартово дерево, построенное на ключах по правилу , должно иметь высоту .