Це найпростіша задача, де вам потрібно реалізувати базові операції зі рядками, такі як вставка та отримання підрядка.
У цій задачі позначає довжину рядка .
Примітка: Ми не змогли знайти вдалу назву для цієї задачі.
Ваша програма буде перевірена на одному або кількох тестових випадках. Перший рядок введення містить одне ціле число , яке вказує на кількість тестових випадків (1 \leq T \leq 100). Далі йдуть тестові випадки, кожен з яких починається з рядка, що містить рядок (1 \leq |S| \leq 1000000), після чого йде один або більше рядків, кожен з яких описує одну з наступних операцій, які потрібно виконати над (усі індекси починаються з нуля, і лапки наведені для ясності):
"I R X" означає вставити рядок (1 \leq |R| \leq 1000000) у на індекс (0 \leq X \leq |S|). Якщо дорівнює , це означає додати в кінець . Наприклад, результат вставки xy у abc на позицію буде axybc, а результат вставки xy у abc на позицію буде abcxy, а результат вставки xy у abc на позицію буде xyabc.
"P X Y" означає вивести підрядок з від до , включно (0 \leq X \leq Y < |S|). Наприклад, підрядок від до з abc є abc, а рядок від до з abc є b.
"END" вказує на кінець операцій для тестового випадку.
Рядки та складаються лише з малих англійських літер ('a' до 'z'), і ніколи не перевищить в результаті операцій для будь-якого тестового випадку. Також загальна кількість символів, які потрібно вивести для будь-якого тестового випадку, не перевищить .
Примітка: Переконайтеся, що використовуєте швидкі операції вводу-виводу, оскільки файли введення та виводу можуть бути дуже великими.
Для кожної операції "P X Y" у введенні, виведіть один рядок з відповідним підрядком.
Приклад 1