11366. Рядок


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Author:
Problem type
Allowed languages
C++, Java, Pascal, Python

Степан має рядок \(S\), що складається з малих англійських літер. Починаючи з цього рядка, він створить новий рядок у процедурі, наведеній нижче.

Процедура складається з \(Q\) операцій. В операції \(i\) (\(1 \leq i \leq Q\)) надається ціле число \(T_i\), що означає наступне:

  • Якщо \(T_i = 1\): перевернути рядок \(S\).

  • Якщо \(T_i = 2\): додатково надається ціле число \(F_i\) і маленька англійська літера \(C_i\).

    • Якщо \(F_i = 1\): додайте \(C_i\) ​ на початок рядка \(S\).

    • Якщо \(F_i = 2\): додайте \(C_i\) до кінця рядка \(S\).

Допоможіть Степану знайти останній рядок, який є результатом описаної процедури.

Формат вхідних даних

Перший рядок містить \(S\) (\(1 \le |S| \le 10^5\)), який містить символи проміжку ['a'..'z'].

Другий рядок містить ціле число \(Q\) (\(1 \le Q \le 2 \times 10^5\))

Наступні  \(Q\) рядків містять запити: 1 або 2 \(F_i\) \(C_i\) (\(F_i = 1, 2\) \(C_i\) in ['a'..'z'])

Формат вихідних даних

У вихідний потік виведіть шуканий рядок.

Примітка

До прикладу 1:

Буде \(Q = 4\) операції. Спочатку \(S\) - це \(a\).

  • Операція 1: Додайте \(р\) на початку \(S\). \(S\) стає \(a\).

  • Операція 2: Реверс \(S\). \(S\) стає \(ap\).

  • Операція 3: Додайте \(c\) в кінці \(S\). \(S\) стає \(apc\).

  • Операція 4: Реверс \(S\). \(S\) стає \(cpa\).

Таким чином, отриманий рядок є \(cpa\).

Приклад вхідних даних

a
4
2 1 p
1
2 2 c
1

Приклад вихідних даних

cpa

Приклад вхідних даних

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

Приклад вихідних даних

aabc

Приклад вхідних даних

y
1
2 1 x

Приклад вихідних даних

xy

Коментарі

Ще немає коментарів.