문자열 S 하나를 유지하면서 삽입 연산과 출력 연산을 주어진 순서대로 처리한다. 삽입 연산은 S의 지정한 위치에 새 문자열을 끼워 넣고, 출력 연산은 S의 지정한 구간을 그대로 출력한다. 특별한 아이디어가 필요한 문제는 아니고 구현이 전부다.
첫 줄에 테스트 케이스의 수 T가 주어진다. (1≤T≤100)
각 테스트 케이스의 첫 줄에 문자열 S가 주어진다. (1≤∣S∣≤1,000,000)
이어서 연산이 한 줄에 하나씩 주어진다. 연산 줄은 적어도 한 줄이다. 인덱스는 0부터 센다.
I R X : S의 인덱스 X 자리에 문자열 R을 삽입한다. (0≤X≤∣S∣) 삽입한 뒤 R의 첫 글자가 인덱스 X에 온다. X=∣S∣이면 S의 뒤에 R을 이어 붙인다. 예를 들어 S가 abc일 때 I xy 1의 결과는 axybc, I xy 3의 결과는 abcxy, I xy 0의 결과는 xyabc다.P X Y : S의 인덱스 X부터 인덱스 Y까지의 문자를 출력한다. (0≤X≤Y<∣S∣) 예를 들어 S가 abc일 때 P 0 2는 abc를, P 1 1은 b를 출력한다.END : 테스트 케이스가 끝났다는 뜻이다.S와 R은 알파벳 소문자로만 이루어진다. 연산을 처리하는 동안 S의 길이가 100만을 넘는 경우는 없고, 출력하는 문자의 개수를 모든 테스트 케이스에서 합해도 100만을 넘지 않는다.
입력과 출력의 양이 많으므로 빠른 입출력을 쓰는 편이 좋다.
P X Y 연산이 나올 때마다 대응하는 부분 문자열을 한 줄에 출력한다.