SOJ ONLINE JUDGE

문자열 편집기

난이도: Platinum I 출제자: rlatjwls7882 시간 제한: 1000 ms 메모리 제한: 512 MB
자료 구조문자열

문자열 $S$가 있다.

$Q$개의 쿼리를 순서대로 처리하라.

쿼리는 다음 중 하나이다.

  • 1 p T: 문자열 $T$를 $S$의 $p$번째 문자 앞에 삽입한다. $p=|S|+1$이면 맨 뒤에 삽입한다.
  • 2 l r: $S$의 $l$번째 문자부터 $r$번째 문자까지 삭제한다.
  • 3 l r: $S$의 $l$번째 문자부터 $r$번째 문자까지 출력한다.
  • 4 l r: $S$의 $l$번째 문자부터 $r$번째 문자까지 잘라낸 뒤 맨 앞으로 이동한다.
  • 5 l r: $S$의 $l$번째 문자부터 $r$번째 문자까지 잘라낸 뒤 맨 뒤로 이동한다.

입력

첫 번째 줄에 초기 문자열 $S$가 주어진다. $(1 \leq |S| \leq 100\,000)$

두 번째 줄에 쿼리의 개수 $Q$가 주어진다. $(1 \leq Q \leq 200\,000)$

세 번째 줄부터 $Q$개의 줄에 걸쳐 쿼리가 하나씩 주어진다.

모든 쿼리는 실행 직전 문자열의 길이를 기준으로 올바르게 주어진다.

문자열은 알파벳 소문자로만 이루어져 있다. $(\text{삽입되는 문자열 길이의 합} \leq 200\,000,\ \text{출력되는 문자열 길이의 합} \leq 200\,000)$

출력

3 l r 쿼리마다 해당 부분 문자열을 한 줄에 하나씩 출력한다.

예제 입력 1

abcdef
8
3 1 6
4 2 4
3 1 6
5 1 2
3 1 6
1 4 xyz
2 2 5
3 1 5

예제 출력 1

abcdef
bcdaef
daefbc
dzfbc

제출