Надіслати розв'язок


Бали: 26,00 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Author:
Problem type

Зверніть увагу, що у цій задачі вам, можливо, буде корисно використовувати Python 3.10 (PyPy) замість Python 3.13.

Нещодавно на лекції з лінійної алгебри Козак Вус дізнався про існування множин. Проте, посеред лекції Козаку Вусу набридло слухати далі, і він програв решту лекції в Stawl Brars. Тепер він не може виконати домашнє завдання на наступний урок, тому він просить вас йому допомогти. Домашнє завдання Козака Вуса виглядає наступним чином:

Є масив ~a~ з ~n~ різних цілих додатних чисел, який потрібно розбити на підмножини. Розбиття на підмножини вважається гарним, якщо кожне число з масиву належить рівно одній підмножині, а також якщо для будь-яких двох чисел з однієї підмножини одне з двох чисел є префіксом іншого. З усіх гарних розбиттів масиву на підмножини треба знайти таке, в якому кількість підмножин мінімальна.

Допоможіть Козаку Вусу зробити домашнє завдання. Якщо відповідей на завдання декілька, дозволяється вивести будь-яку з них.

Масив ~a~ називається підмножиною масиву ~b~, якщо ~a~ можна отримати шляхом видалення декількох (або нуля) будь-яких елементів з масиву ~b~, а також перестановки елементів в ньому. Наприклад, масиви ~[3, 1, 5]~, ~[1]~ та ~[1, 2, 3, 4, 5]~ є підмножинами масиву ~[1, 2, 3, 4, 5]~, а ~[1, 3, 10]~ або ~[1, 1, 2, 3]~ не є підмножинами масиву ~[1, 2, 3, 4, 5]~.

Число ~b~ є префіксом іншого числа ~c~, якщо існує таке ціле ~x \geq 0~, що якщо націло розділити ~c~ на ~10^x~, то вийде число ~b~. Більш формально, існує таке ціле ~x \geq 0~, що ~\lfloor{\frac{C}{10^x} \rfloor} =b~. Наприклад, число ~123~ є префіксом числа ~12345~, а числа ~234~ та ~13~ не є префіксами числа ~12345~.

Input

Перший рядок містить одне ціле число ~n~ (~1 \leq n \leq 10^5~) — довжина масиву ~a~.

Другий рядок містить ~n~ цілих чисел ~a_1, a_2, \dots, a_n~ (~1 \leq a_i \leq 10^{18}~) — елементи масиву ~a~.

Гарантується, що всі числа масиву ~a~ різні.

Output

У першому рядку вихідних даних виведіть одне ціле додатне число ~k~ — мінімальна можлива кількість підмножин у гарному розбитті.

Далі виведіть ~k\cdot2~ рядків:

  • У рядку з номером ~i\cdot2~ виведіть одне ціле число ~x_i~ — кількість чисел у ~i~-тій підмножині (~1 \leq i \leq k~).

  • У рядку з номером ~i\cdot2+1~ виведіть ~x_i~ цілих чисел — зміст ~i~-тої підмножини. Числа в цій множині можна виводити у будь-якому порядку.

Sample Input 1

5
2 318 3 21 31

Sample Output 1

2
3
318 31 3 
2
21 2

Sample Input 2

5
1 100 1000 1001 130

Sample Output 2

3
3
1001 100 1 
1
1000 
1
130

Notes

У першому прикладі оптимальне розбиття виглядає наступним чином:

~\Large \color{green}{2}~, ~\Large \color{red}{318}~, ~\Large \color{red}{3}~, ~\Large \color{green}{21}~, ~\Large \color{red}{31}~

У зеленій підмножині:

  • ~2~ є префіксом ~21~, оскільки ~\lfloor \frac{21}{10^1} \rfloor\ = 2~.

У червоній підмножині:

  • ~3~ є префіксом ~318~, оскільки ~\lfloor \frac{318}{10^2} \rfloor\ = 3~.

  • ~3~ є префіксом ~31~, оскільки ~\lfloor \frac{31}{10^1} \rfloor\ = 3~.

  • ~31~ є префіксом ~318~, оскільки ~\lfloor \frac{318}{10^1} \rfloor\ = 31~.

У другому прикладі оптимальне розбиття виглядає наступним чином:

~\Large \color{blue}{1}~, ~\Large \color{green}{100}~, ~\Large \color{red}{1000}~, ~\Large \color{green}{1001}~, ~\Large \color{blue}{130}~

У зеленій підмножині:

  • ~100~ є префіксом ~1001~, оскільки ~\lfloor \tfrac{1001}{10^1} \rfloor = 100~.

У червоній підмножині:

  • ~1000~ не є префіксом жодного іншого числа в цій підмножині.

У синій підмножині:

  • ~1~ є префіксом ~130~, оскільки ~\lfloor \tfrac{130}{10^2} \rfloor = 1~.

Ви отримаєте не менше ~20~ балів, якщо ваш розв'язок буде коректно працювати для ~n \leq 18~.

Ви отримаєте не менше ~40~ балів, якщо ваш розв'язок буде коректно працювати для ~n \leq 500~.


Коментарі

Please read the guidelines before commenting.



  • 0
    zvit  commented on Лис. 7, 2025, 4:38 після полудня

    Увага! Чекер автора поки не налаштований і тому працює стандартний чекер