Сакурако та Старий Словник#11716

Сакурако та Старий Словник

1,25 секунди
256 мегабайтів
Складна

Сакурако прибирає в кімнаті. Він знайшов словник, який містить стрічок. Однак цей словник є особливим, і наявність стрічки в словнику не означає, що таке слово існує в реальності.

Будь-яке слово зі світу Сакурако може бути отримане шляхом переставляння стрічок зі словника та їх об'єднання в одне слово. Наприклад, якщо словник містить стрічки: \texttt{``a''},~\texttt{``b''},~\texttt{``ab''}, можливі слова: \texttt{``abab''},~\texttt{``aabb''},~\texttt{``baab''},~\texttt{``baba''},~\texttt{``abba''}.

Оскільки словник трохи застарів, у світі з'явилися нові слова. Їх все ще можна отримати з цього словника, якщо буде обернуто не більше стрічок.

Допоможіть Сакурако знайти лексикографічно найменше можливе слово в сучасному житті.

Вхідні дані

Перший рядок містить два цілі числа n,~k~(1\le n\le 2\cdot 10^5;\;k\in\{0,1\}) — кількість стрічок у словнику та кількість можливих обертань.

Кожен з наступних рядків містить стрічку s~(1\le |s_i|\le 2\cdot 10^5), яка належить до словника.

Гарантується, що \sum |s_i|\le 4\cdot 10^5 і всі стрічки складаються з малих англійських літер.

Вихідні дані

В одному рядку виведіть лексикографічно найменше слово.

Приклади

Приклад

Loading
Loading

Оцінювання

  1. ( балів): k = 0,~|s_1|=|s_2|=\dots=|s_n|;

  2. ( балів): k = 0,~|s_i|\le 10;

  3. ( бали): k = 0;

  4. ( бали): n \le 500,~|s_i|\le 10;

  5. ( балів): n \le 1000;

  6. ( бали): |s_1|=|s_2|=\dots=|s_n|;

  7. ( бал): s_i складається з літер та ;

  8. ( бали): без додаткових обмежень.