Без імені#6523

Без імені

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

Це найпростіша задача, де вам потрібно реалізувати базові операції зі рядками, такі як вставка та отримання підрядка.

У цій задачі позначає довжину рядка .

Примітка: Ми не змогли знайти вдалу назву для цієї задачі.

Вхідні дані

Ваша програма буде перевірена на одному або кількох тестових випадках. Перший рядок введення містить одне ціле число , яке вказує на кількість тестових випадків (1 \leq T \leq 100). Далі йдуть тестові випадки, кожен з яких починається з рядка, що містить рядок (1 \leq |S| \leq 1000000), після чого йде один або більше рядків, кожен з яких описує одну з наступних операцій, які потрібно виконати над (усі індекси починаються з нуля, і лапки наведені для ясності):

  1. "I R X" означає вставити рядок (1 \leq |R| \leq 1000000) у на індекс (0 \leq X \leq |S|). Якщо дорівнює , це означає додати в кінець . Наприклад, результат вставки xy у abc на позицію буде axybc, а результат вставки xy у abc на позицію буде abcxy, а результат вставки xy у abc на позицію буде xyabc.

  2. "P X Y" означає вивести підрядок з від до , включно (0 \leq X \leq Y < |S|). Наприклад, підрядок від до з abc є abc, а рядок від до з abc є b.

  3. "END" вказує на кінець операцій для тестового випадку.

Рядки та складаються лише з малих англійських літер ('a' до 'z'), і ніколи не перевищить в результаті операцій для будь-якого тестового випадку. Також загальна кількість символів, які потрібно вивести для будь-якого тестового випадку, не перевищить .

Примітка: Переконайтеся, що використовуєте швидкі операції вводу-виводу, оскільки файли введення та виводу можуть бути дуже великими.

Вихідні дані

Для кожної операції "P X Y" у введенні, виведіть один рядок з відповідним підрядком.

Приклади

Приклад 1

Loading
Loading