Ніде Гроші#5705

Ніде Гроші

1 секунда
256 мегабайтів
Дуже складна

У місті Ніде люди використовують "монети та слоти" як свою валюту. Існує типи монет, які називаються розмір1 та розмір2. Монета розмір2 вдвічі товстіша за розмір1. Люди складають свої монети в слоти і використовують їх як гроші. Існує багато розмірів слотів. Слот розміру може вмістити монет розмір1. Лише заповнений слот вважається легальними грошима. Вартість кожного заповненого слота - це кількість різних способів, якими можна скласти монети всередині. Наприклад, для слота розміру-1 є лише один спосіб скласти одну монету розмір1 всередині. Для слота розміру-2 є способи: скласти дві монети розмір1 або одну монету розмір2 всередині. А для слота розміру-5 є способів скласти монети всередині, що можна проілюструвати так: 1 1 1 1 1, 1 1 1 2, 1 1 2 1, 1 2 1 1, 2 1 1 1, 1 2 2, 2 1 2, 2 2 1. Отже, вартість заповненого слота розміру-1, розміру-2 та розміру-5 становить , та (грошових) одиниць відповідно (незалежно від типу монет або способів їх складання).

Пан Думайдвічі є власником продуктового магазину в цьому місті. Він помітив, що клієнти зазвичай обирають магазин, який може повернути здачу у формі, що підходить їхнім потребам. І з його невеликого опитування він з'ясував, що більшість клієнтів хотіли б отримати свою здачу у формі, що відповідає цим простим обмеженням.

  1. Кількість слотів має бути мінімальною.

  2. Розмір кожного слота повинен відрізнятися від інших щонайменше на .

Отже, пан Думайдвічі просить вас написати програму, яка може дати йому ряд розмірів слотів для заданої суми здачі відповідно до попередніх обмежень. Крім того, ряд має бути відсортований у порядку спадання. Більш конкретно, будь-яка сума здачі може бути записана в цій формулі.

де

Наприклад:

Вхідні дані

Вхідні дані - це стандартний вхід, який містить набір цілих чисел. Кожен рядок входу - це сума здачі, яка представлена додатним цілим числом, меншим або рівним або 5 \times 10^{18}. Вхід завершується, коли досягається EOF (кінець файлу).

Вихідні дані

Для кожної суми здачі згенеруйте рядки вихідних даних. Перший рядок - це сама сума здачі. Другий рядок - це ряд розмірів слотів (у порядку спадання), розділених пробілами. (Максимальний розмір слота не перевищує .) Третій рядок - це ряд відповідних значень слотів. Четвертий рядок - це порожній рядок.

Приклади

Приклад 1

Loading
Loading