Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Zaliczki
(zaliczki)
Memory limit: 64 MB
Time limit: 1.00 s

Pan Janusz często na swoich spotkaniach biznesowych potrzebuje gotówki. Podwykonawcy wymagają różnych zaliczek i to w różnych kwotach, które trudno przewidzieć. Pan Janusz postanowił więc możliwie dobrze się przygotować i wypłacić z banku takie banknoty, które pozwolą mu na wypłacenie zaliczki kolejnemu podwykonawcy. Postanowił sobie, że będzie przygotowany na dokładnie N różnych kwot do wydania. Pan Janusz oczywiście chciałby możliwie mało się przy tym nanosić, zatem chciałby uzyskać te N różnych kwot przy pomocy jak najmniejszej liczby nominałów.

W kraju Pana Janusza są banknoty o dowolnych nominałach będących dodatnią liczbą naturalną. Niestety Pan Janusz nie wie, jak wybrać odpowiednie nominały do wypłaty z banku, więc poprosił Cię o pomoc.

Napisz program, który wczyta liczbę różnych kwot, jakie Pan Janusz chce móc wydać, a następnie wyznaczy jakie nominały powinien wypłacić z banku i wypisze je na standardowe wyjście.

Wejście

W pierwszym (i jedynym) wierszu standardowego wejścia znajduje się jedna liczba naturalna N oznaczająca liczbę różnych kwot, jakie chce móc wydać Pan Janusz.

Wyjście

W pierwszym wierszu wyjścia Twój program powinien wypisać liczbę banknotów R, które Pan Janusz powinien wypłacić z banku. W drugim wierszu powinien wypisać niemalejący ciąg R liczb naturalnych Ai, pooddzielanych pojedynczymi odstępami – nominały jakie Pan Janusz powinien wypłacić.

Jeśli istnieje wiele możliwych rozwiązań, należy wypisać rozwiązanie najmniejsze leksykograficznie – tj. takie, w którym A1 jest najmniejsze możliwe, a wśród tych rozwiązań należy wybrać takie, w którym A2 jest najmniejsze możliwe itd.

Uwaga

Pan Janusz, nawet nie posiadając żadnych banknotów zawsze jest przygotowany na zapłacenie kwoty 0.

Ograniczenia

1 ≤ N ≤ 1018.

Przykład

Input Output
6
3
1 1 3