Програмісти часто використовують системи контролю версій для управління файлами у своїх проектах. Однак у цих системах версії зберігаються лише тоді, коли ви вручну надсилаєте зміни. Чи можете ви створити IDE, яке автоматично зберігає нову версію щоразу, коли ви вставляєте або видаляєте рядок?
Позиції в буфері нумеруються з зліва направо. Спочатку буфер порожній і знаходиться у версії . Потім ви можете виконати типи команд (де означає версію перед виконанням команди, а L_v — це довжина буфера у версії ):
: вставити рядок після позиції (0 \leq p \leq L_{vnow}, p=0 означає вставити перед початком буфера). містить від до літер.
: видалити символів, починаючи з позиції (p \geq 1, p+c \leq L_{vnow}+1). Залишені символи (якщо є) будуть зміщені вліво, заповнюючи порожнечу.
: вивести символів, починаючи з позиції (p \geq 1, p+c \leq L_v+1), у версії (1 \leq v \leq vnow).
Перша команда завжди буде командою (вставка). Після виконання кожної команди або , версія збільшується на .
Є лише один тестовий випадок. Він починається з одного цілого числа (1 \leq n \leq 50000), що вказує на кількість команд.
Кожен з наступних рядків містить команду. Загальна довжина всіх вставлених рядків не перевищуватиме .
Виведіть результати команд у порядку. Загальна довжина всіх виведених рядків не перевищуватиме .
Обфускація
Щоб запобігти попередній обробці команд, ми застосовуємо наступну схему обфускації:
Кожна команда типу- стає p+d
Кожна команда типу- стає p+d c+d
Кожна команда типу- стає v+d p+d c+d
Де — це кількість малих літер 'c', які ви вивели, перед обробкою цієї команди.
Наприклад, необфускований зразок введення виглядає так:
6
1 0 abcdefgh
2 4 3
3 1 2 5
3 2 2 3
1 2 xy
3 3 2 4Після обфускації зразок введення буде:
6
1 0 abcdefgh
2 4 3
3 1 2 5
3 3 3 4
1 4 xy
3 5 4 6Це реальний вхід, який ваша програма буде читати.
Приклад 1