Абракадабра
Абракадабра
Під час своєї роботи алгоритм стискання даних методом "сортування блоку" застосовує до блоків даних перетворення, яке визначається наступним чином.
Рядок P
називається ротацією рядка S
, якщо він утворений циклічним зсувом символів S
, тобто якщо S=a1a2…aN
, де ai
— i
–ий символ рядка S
, то P = apap+1…aNa1…ap-1
, де 1 ≤ p ≤ N
. Розглянемо таблицю M
розміру N
×N
, рядками якої є всі ротації рядка S
, відсортовані у лексикографічному (словниковому) порядку за зростанням.
Нехай рядок L
є останнім стовпчиком таблиці M
. Пряме перетворення отримує на вхід рядок S
, видає рядок L
та число K
— номер рядка таблиці M
, що містить рядок S
. (Якщо таких рядків декілька, видається номер будь–якого з них).
Для S = 'abraka'
таблицю M
зображено на малюнку. Рядок S
знаходиться у другому рядку таблиці M
, L = 'karaab'
.
Напишіть програму, що виконує зворотнє перетворення, тобто отримує на вхід рядок L
і число K
, та видає рядок S
.
Вхідні дані
Перший рядок вхідного файлу містить два цілих числа: K
та N
, 1 ≤ N ≤ 30000
, 1 ≤ K ≤ N
. Другий рядок містить N
символів рядка L
— маленьких латинських літер.
Вихідні дані
Єдиний рядок вихідного файлу повинен містити рядок S
.
2 6 karaab
abraka