Контрольована версіями IDE#4094

Контрольована версіями IDE

8 секунд
64 мегабайти
Дуже складна

Програмісти часто використовують системи контролю версій для управління файлами у своїх проектах. Однак у цих системах версії зберігаються лише тоді, коли ви вручну надсилаєте зміни. Чи можете ви створити 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

Loading
Loading