eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Розбиття множини

Розбиття множини

Розглянемо множину, яка складається з перших \textbf{n} натуральних чисел: \textbf{N_n} = \{\textbf{1}, \textbf{2}, ..., \textbf{n}\}. \textit{Розбиття} - це подання цієї множини у вигляді об'єднання однієї чи декількох непорожніх множин. Прикладами розбиття для \textbf{n}=\textbf{5} є: \{1, 2, 3, 4, 5\} = \{1, 2, 3\} U \{4, 5\} \{1, 2, 3, 4, 5\} = \{1, 3, 5\} U \{2, 4\} \{1, 2, 3, 4, 5\} = \{1, 2, 3, 4, 5\} \{1, 2, 3, 4, 5\} = \{1\} U \{2\} U \{3\} U \{4\} U \{5\} Всього існує \textbf{52} розбиття множини \textbf{N_5}. Відмітимо, що розбиття, які відрізняються лише порядком об'єднуваних множин, не відрізняються. Розбиття множини \textbf{N_n} можна впорякувати \textit{лексикогріфчно}. \includegraphics{https://static.e-olymp.com/content/cc/cc8a15c4c87b4c7e92efe076a394dd47b084fd99.jpg} \includegraphics{https://static.e-olymp.com/content/cc/cc8a15c4c87b4c7e92efe076a394dd47b084fd99.jpg} Для того, щоб визначити цей порядок, спочатку визначимо лексикографічний порядок на підмножинах \textbf{N_n}. Будемо казати, що множина \textbf{A} \textbf{N_n} лексикографічно менше множини \textbf{B} \textbf{N_n} і записувати \textbf{A} < \textbf{B}, якщо вірно одне з наступних тверджень: \begin{itemize} \item знайдеться \textbf{i}, таке що \textbf{i} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{A}, \textbf{i} \includegraphics{https://static.e-olymp.com/content/97/970fb3450de3b7b3d852f20e523df2d748f3f66c.jpg} \textbf{B}, для всіх \textbf{j} < \textbf{i}: \textbf{j} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{A} iff \textbf{j} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{B}, і знайдеться \textbf{k} > \textbf{i}, таке що \textbf{k} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{B}; \item \textbf{A} \includegraphics{https://static.e-olymp.com/content/cc/cc8a15c4c87b4c7e92efe076a394dd47b084fd99.jpg} \textbf{B} та \textbf{i} < \textbf{j} для всіх \textbf{i} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{A} и \textbf{j} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{B} \ \textbf{A}. \end{itemize} Очевидно, що введене відношення є повним порядком на підмножинах множини \textbf{N_n}. Тепер визначимо \textit{канонічне подання} розбиття, як подання, у якому об'єднувані множини впорядковані лексикографічно. Разбиття впорядковуються лексикографічно наступним чином. Розбиття \textbf{N_n} = \textbf{A_1} U \textbf{A_2} U \textbf{...} U \textbf{A_k }лексикографічно менше розбиття \textbf{N_n} = \textbf{B_1} U \textbf{B_2} U \textbf{...} U \textbf{B_l}, якщо існує таке \textbf{i}, що \textbf{A_1} = \textbf{B_1}, \textbf{A_2} = \textbf{B_2}, ..., \textbf{A_\{i-1\}} = \textbf{B_\{i-1\}} і \textbf{A_i} < \textbf{B_i}. За розбиття множини \textbf{N_n} знайдіть наступне у лексикографічному порядку розбиття. \InputFile Вхідний файл містить декілька описів тестів. Кажен опис є канонічним поданням розбиття. Перший рядок опису містить \textbf{n} і \textbf{k} --- кількість елементів у множині, що розбивається, і кількість частин у розбитті (\textbf{1} ≤ \textbf{n} ≤ \textbf{200}). Наступні \textbf{k} рядків містять елементи розбиття. Елементи кожної множини впорядковані за зростанням. Опии тестів відокремлено один від одного порожніми рядками. Останній рядок вхідного файлу містить два нулі. Цей тест не повинен опрацьовуватись. Сума \textbf{n} по всім описам не перевищує \textbf{2000}. \OutputFile Для кожного тесту виведіть наступну у лексикографічному порядку розбиття. Якщо розбиття у вхідному файлі є оствннім у лексигорафічному порядку, виведіть перше у лексикографісному порядку. Використовуйте той же формат, що і у вхідному файлі. Відокремлюйте розбиття одне від одного порожніми рядками.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
5 2
1 2 3
4 5

5 2
1 3 5
2 4

5 1
1 2 3 4 5

5 5
1
2
3
4
5

0 0
Вихідні дані #1
5 2
1 2 3 4
5

5 4
1 4
2
3
5

5 2
1 2 3 5
4

5 4
1
2
3
4 5