아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Prezenty

시간 제한5초메모리 제한1024 MB

요약
1개부터 N개까지 든 사탕 묶음을 같은 합이 되도록 최대한 많은 그룹으로 나누고 배정을 출력한다.
난이도

보통10점 중 5점

유형
정수론, 그리디, 수학
정답자
아직 제출이 없습니다

문제

Bajtosia i Bajtek przygotowują mikołajkowe prezenty dla uczniów swojej szkoły. Wspólnie stwierdzili, że najlepszym (niekoniecznie dla zębów) prezentem będzie dużo cukierków. Bajtek kupił N pakunków z cukierkami, zawierających kolejno 1, 2, . . . , N cukierków.

Bajtosia chce rozdzielić wszystkie cukierki między jak największą liczbę dzieci, ale nie podoba się jej pomysł, żeby otwierać pakunki (kto by chciał dostać otwarty prezent?) ani pomysł, że niektórzy uczniowie mogliby dostać inną liczbę cukierków niż inni. Jedna osoba może jednak dostać kilka różnych pakunków.

Czy możesz pomóc? Napisz program, który wyznaczy największą liczbę uczniów, między których można podzielić wszystkie pakunki tak, aby każdy dostał po tyle samo cukierków.

입력

W pierwszym (jedynym) wierszu wejścia znajduje się jedna liczba naturalna N (1 ≤ N ≤ 200 000) określająca liczbę pakunków przygotowanych przez Bajtka.

출력

W pierwszym wierszu wyjścia powinna się znaleźć jedna liczba naturalna R: największa liczba dzieci, które mogą być obdarowane prezentami. W kolejnych R wierszach należy wypisać opis prezentów dla kolejnych dzieci, po jednym w wierszu. Opis prezentów dla kolejnych dzieci powinien się składać z liczby naturalnej Ri określającej liczbę pakunków, które otrzyma i-te dziecko, pojedynczego odstępu oraz ciągu Ri liczb naturalnych opisujących liczby cukierków w pakunkach przypisanych prezentowi dla i-tego dziecka. Jeśli istnieje wiele możliwych rozwiązań, Twój program może wypisać dowolne z nich.

예제2

  1. 예제 1

    입력
    3
    
    예상 출력
    2
    2 1 2
    1 3
    
  2. 예제 2

    입력
    4
    
    예상 출력
    2
    2 1 4
    2 2 3