Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024
Problem description
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 | |
|
|