Мова#2739

Мова

1 секунда
256 мегабайтів
Дуже складна

Прибувши в Антарктиду, Шкіпер, Ріко, Прапорщик і Ковальські виявили, що не розуміють, про що говорять місцеві пінгвіни. Шкіпер доручив Прапорщику, як найрозумнішому, розібратися з мовою місцевих і отримати від них оперативну інформацію.

Прапорщик записав усі фрази, які почув від місцевих, у послідовності звуків, використовуючи малі латинські літери. Таким чином, він отримав рядок з малих латинських літер. Потім Прапорщик почав аналіз цього рядка: змінював символи, переставляв підрядки з місця на місце, порівнював підрядки між собою... Зрештою Прапорщик остаточно заплутався і попросив у вас допомоги. Він ретельно записував усі проведені з рядком операції на аркуші паперу, отримавши список із записів одного з таких типів:

На жаль, Прапорщик загубив аркуш результату, а без нього зрозуміти мову місцевих неможливо. Допоможіть йому відновити результати проведених операцій.

Вхідні дані

У першому рядку вхідних даних задано два числа і — довжина рядка, який записав Прапорщик, та кількість виконаних операцій (1 \le n,\ m \le 10^5). У другому рядку задано малих латинських літер — початковий рядок, записаний Прапорщиком. У наступних рядках задано описи дій Прапорщика у вказаному вище форматі. Всі індекси гарантовано знаходяться у допустимих межах, а при заданні підрядка i \le j.

Символи у рядку нумеруються від до , символ на -й позиції позначається як . Нагадаємо, що підрядок з рядка — це рядок, що складається із символів , s[i+1], ..., .

Вихідні дані

Виведіть по одному рядку для кожної операції порівняння або копіювання. Для кожної операції порівняння, виконаної Прапорщиком, виведіть , якщо підрядки збігалися, інакше — . Для кожної операції копіювання виведіть поточний стан рядка на цей момент. Гарантується, що загальний обсяг виведених даних (без урахування символів переходу на новий рядок) не перевищуватиме одного мегабайта.

Приклади

Приклад 1

Loading
Loading