A. Объединение слизней
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

На день рождения ваш друг подарил вам n слизней, каждый из которых изначально имеет толщину 1.

Вы решили развлечься. Сначала вы ставите одного слизня на подоконник, а затем последовательно добавляете остальных. При добавлении очередного слизня вы ставите его правее всех уже имеющихся слизней. Пока на подоконнике находится больше одного слизня и крайние два справа имеют одну и ту же толщину v, вы можете объединить их вместе, чтобы создать слизня толщины v + 1.

Определите толщину всех слизней, которые будут стоять на подоконнике в конце этого процесса.

Входные данные

В первой строке входных данных записано единственное целое число n (1 ≤ n ≤ 100 000).

Выходные данные

Выведите единственную строку с k целыми числами, где k является итоговым количеством слизней после завершения процедуры, описанной в условии задачи. i-е из этих чисел должно быть толщиной i-го слева слизня.

Примеры
Входные данные
1
Выходные данные
1
Входные данные
2
Выходные данные
2
Входные данные
3
Выходные данные
2 1
Входные данные
8
Выходные данные
4
Примечание

В первом примере у нас есть единственный слизень толщиной 1. Конечное состояние доски — 1.

Во втором примере мы выполняем следующие шаги:

  1. Размещаем на подоконнике одного слизня.
  2. Добавляем ещё одного слизня. Теперь подоконник выглядит как 1 1.
  3. Поскольку два последних слизня имеют одинаковую толщину, то мы заменяем этих слизней на одного слизня толщины 2.

Таким образом, конечное состояние подоконника равно 2.

В третьем примере после добавления первых двух слизней подоконник выглядит как 2. После добавления ещё одного слизня — 2 1.

В последнем примере шаги выглядят следующим образом:

  1. 1
  2. 2
  3. 2 1
  4. 3
  5. 3 1
  6. 3 2
  7. 3 2 1
  8. 4