문자열 편집기
문자열 $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