B. Стадион и игры
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

Иван Дурак организует соревнование по футболу. Для этого соревнования он будет использовать следующую систему:

  1. На первых нескольких (возможно, нуле) этапах, покуда количество команд четно, они разбиваются на пары, и в каждой паре команды играют друг с другом одну игру. На каждом таком этапе проигравший в паре выбывает из соревнования (ничей быть не может). Такие этапы проводятся, пока не останется нечетное количество команд.
  2. Если осталась ровно одна команда, то она объявляется победителем, и соревнование завершается. Иначе команды играют по одной игре каждая с каждой (если было x команд, то будет сыграно игр), после чего соревнование завершается.

Например, если в начале было 20 команд, то после первого этапа останется всего 10 команд. После второго этапа останется всего пять команд, и они сыграют по одной игре каждая с каждой. Итого будет сыграно 10+5+10=25 игр.

Красная Шапочка уже зарезервировала для Ивана Дурака стадион на n игр. Помогите ему определить, сколько надо пригласить команд, чтобы в результате было сыграно ровно n игр. Если вариантов несколько, выведите их все в порядке возрастания. Если нет ни одного варианта, выведите -1.

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

В первой строке записано целое число n (1 ≤ n ≤ 1018), количество игр, которое следует сыграть.

Пожалуйста, не используйте спецификатор %lld для чтения или записи 64-х битных чисел на С++. Рекомендуется использовать потоки cin, cout или спецификатор %I64d.

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

Выведите все возможные количества команд, при которых будет сыграно ровно n игр, в порядке возрастания. Если ни при каком количестве команд не будет сыграно ровно n игр, выведите -1.

Примеры
Входные данные
3
Выходные данные
3
4
Входные данные
25
Выходные данные
20
Входные данные
2
Выходные данные
-1