D - String Formation Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 400

問題文

高橋君は、英小文字から成る文字列 S を持っています。

この S から始めて、ある与えられた手順に従って文字列を作ることにしました。

手順は Q 回の操作から成ります。操作 i(1 \leq i \leq Q) では、まず整数 T_i が与えられます。

  • T_i = 1 のとき : 文字列 S の前後を反転する。

  • T_i = 2 のとき : 追加で整数 F_i と英小文字 C_i が与えられる。

    • F_i = 1 のとき : 文字列 S の先頭に C_i を追加する。
    • F_i = 2 のとき : 文字列 S の末尾に C_i を追加する。

高橋君のために、手順の後に最終的にできる文字列を求めてあげてください。

制約

  • 1 \leq |S| \leq 10^5
  • S は英小文字から成る
  • 1 \leq Q \leq 2 \times 10^5
  • T_i = 1 または 2
  • F_i = 1 または 2
  • C_i は英小文字である

入力

入力は以下の形式で標準入力から与えられる。

S
Q
Query_1
:
Query_Q

3 行目から Q + 2 行目の Query_i は、以下の 2 つのいずれかである。

1

T_i = 1 として操作を行うことを表す。

2 F_i C_i

T_i = 2 として操作を行うことを表す。

出力

手順の後に最終的にできる文字列を出力せよ。


入力例 1

a
4
2 1 p
1
2 2 c
1

出力例 1

cpa

Q = 4 回の操作を行います。初め Sa です。

  • 操作 1 : S の先頭に p を追加する。Spa となる。

  • 操作 2 : S の前後を反転する。Sap となる。

  • 操作 3 : S の末尾に c を追加する。Sapc となる。

  • 操作 4 : S の前後を反転する。Scpa となる。

よって最終的にできる文字列は cpa となります。


入力例 2

a
6
2 2 a
2 1 b
1
2 2 c
1
1

出力例 2

aabc

Q = 6 回の操作を行います。初め Sa です。

  • 操作 1 : Saa となる。

  • 操作 2 : Sbaa となる。

  • 操作 3 : Saab となる。

  • 操作 4 : Saabc となる。

  • 操作 5 : Scbaa となる。

  • 操作 6 : Saabc となる。

よって最終的にできる文字列は aabc となります。


入力例 3

y
1
2 1 x

出力例 3

xy

Score : 400 points

Problem Statement

Takahashi has a string S consisting of lowercase English letters.

Starting with this string, he will produce a new one in the procedure given as follows.

The procedure consists of Q operations. In Operation i (1 \leq i \leq Q), an integer T_i is provided, which means the following:

  • If T_i = 1: reverse the string S.

  • If T_i = 2: An integer F_i and a lowercase English letter C_i are additionally provided.

    • If F_i = 1 : Add C_i to the beginning of the string S.
    • If F_i = 2 : Add C_i to the end of the string S.

Help Takahashi by finding the final string that results from the procedure.

Constraints

  • 1 \leq |S| \leq 10^5
  • S consists of lowercase English letters.
  • 1 \leq Q \leq 2 \times 10^5
  • T_i = 1 or 2.
  • F_i = 1 or 2, if provided.
  • C_i is a lowercase English letter, if provided.

Input

Input is given from Standard Input in the following format:

S
Q
Query_1
:
Query_Q

In the 3-rd through the (Q+2)-th lines, Query_i is one of the following:

1

which means T_i = 1, and:

2 F_i C_i

which means T_i = 2.

Output

Print the resulting string.


Sample Input 1

a
4
2 1 p
1
2 2 c
1

Sample Output 1

cpa

There will be Q = 4 operations. Initially, S is a.

  • Operation 1: Add p at the beginning of S. S becomes pa.

  • Operation 2: Reverse S. S becomes ap.

  • Operation 3: Add c at the end of S. S becomes apc.

  • Operation 4: Reverse S. S becomes cpa.

Thus, the resulting string is cpa.


Sample Input 2

a
6
2 2 a
2 1 b
1
2 2 c
1
1

Sample Output 2

aabc

There will be Q = 6 operations. Initially, S is a.

  • Operation 1: S becomes aa.

  • Operation 2: S becomes baa.

  • Operation 3: S becomes aab.

  • Operation 4: S becomes aabc.

  • Operation 5: S becomes cbaa.

  • Operation 6: S becomes aabc.

Thus, the resulting string is aabc.


Sample Input 3

y
1
2 1 x

Sample Output 3

xy