import sys, re

from collections import deque, defaultdict, Counter

from math import ceil, sqrt, hypot, factorial, pi, sin, cos, tan, asin, acos, atan, radians, degrees#, log2

from itertools import accumulate, permutations, combinations, combinations_with_replacement, product, groupby

from operator import itemgetter, mul

from copy import deepcopy

from string import ascii_lowercase, ascii_uppercase, digits

from bisect import bisect, bisect_left, insort, insort_left

from fractions import gcd

from heapq import heappush, heappop

from functools import reduce

def input(): return sys.stdin.readline().strip()

def INT(): return int(input())

def MAP(): return map(int, input().split())

def LIST(): return list(map(int, input().split()))

def ZIP(n): return zip(*(MAP() for _ in range(n)))

sys.setrecursionlimit(10 ** 9)

INF = float('inf')

mod = 10**9 + 7

#from decimal import *

 

S = input()

Q = INT()

q = deque(S)

flg = 1

for _ in range(Q):

	Que = input().split()

	if Que[0] == "1":

		flg *= -1

	else:

		_, F, C = Que

		if any(int(F)*flg == x for x in [2, -1]):

			q.append(C)

		else:

			q.appendleft(C)

if flg == 1:

	print(*q, sep = "")

else:

	print(*list(q)[::-1], sep = "")

import sys, re

from collections import deque, defaultdict, Counter

from math import ceil, sqrt, hypot, factorial, pi, sin, cos, tan, asin, acos, atan, radians, degrees#, log2

from itertools import accumulate, permutations, combinations, combinations_with_replacement, product, groupby

from operator import itemgetter, mul

from copy import deepcopy

from string import ascii_lowercase, ascii_uppercase, digits

from bisect import bisect, bisect_left, insort, insort_left

from fractions import gcd

from heapq import heappush, heappop

from functools import reduce

def input(): return sys.stdin.readline().strip()

def INT(): return int(eval(input()))

def MAP(): return list(map(int, input().split()))

def LIST(): return list(map(int, input().split()))

def ZIP(n): return list(zip(*(MAP() for _ in range(n))))

sys.setrecursionlimit(10 ** 9)

INF = float('inf')

mod = 10**9 + 7

#from decimal import *

 

S = eval(input())

Q = INT()

q = deque(S)

flg = 1

for _ in range(Q):

	Que = input().split()

	if Que[0] == "1":

		flg *= -1

	else:

		_, F, C = Que

		if any(int(F)*flg == x for x in [2, -1]):

			q.append(C)

		else:

			q.appendleft(C)





ans = "".join(q)

if flg == -1:

	ans = ans[::-1]

print(ans)
import sys, re
from collections import deque, defaultdict, Counter
from math import (
    ceil,
    sqrt,
    hypot,
    factorial,
    pi,
    sin,
    cos,
    tan,
    asin,
    acos,
    atan,
    radians,
    degrees,
)  # , log2
from itertools import (
    accumulate,
    permutations,
    combinations,
    combinations_with_replacement,
    product,
    groupby,
)
from operator import itemgetter, mul
from copy import deepcopy
from string import ascii_lowercase, ascii_uppercase, digits
from bisect import bisect, bisect_left, insort, insort_left
from fractions import gcd
from heapq import heappush, heappop
from functools import reduce


def input():
    return sys.stdin.readline().strip()


def INT():
    return int(input())


def MAP():
    return map(int, input().split())


def LIST():
    return list(map(int, input().split()))


def ZIP(n):
    return zip(*(MAP() for _ in range(n)))


sys.setrecursionlimit(10**9)
INF = float("inf")
mod = 10**9 + 7
# from decimal import *
S = input()
Q = INT()
q = deque(S)
flg = 1
for _ in range(Q):
    Que = input().split()
    if Que[0] == "1":
        flg *= -1
    else:
        _, F, C = Que
        if any(int(F) * flg == x for x in [2, -1]):
            q.append(C)
        else:
            q.appendleft(C)
if flg == 1:
    print(*q, sep="")
else:
    print(*list(q)[::-1], sep="")

import sys, re
from collections import deque, defaultdict, Counter
from math import (
    ceil,
    sqrt,
    hypot,
    factorial,
    pi,
    sin,
    cos,
    tan,
    asin,
    acos,
    atan,
    radians,
    degrees,
)  # , log2
from itertools import (
    accumulate,
    permutations,
    combinations,
    combinations_with_replacement,
    product,
    groupby,
)
from operator import itemgetter, mul
from copy import deepcopy
from string import ascii_lowercase, ascii_uppercase, digits
from bisect import bisect, bisect_left, insort, insort_left
from fractions import gcd
from heapq import heappush, heappop
from functools import reduce


def input():
    return sys.stdin.readline().strip()


def INT():
    return int(eval(input()))


def MAP():
    return list(map(int, input().split()))


def LIST():
    return list(map(int, input().split()))


def ZIP(n):
    return list(zip(*(MAP() for _ in range(n))))


sys.setrecursionlimit(10**9)
INF = float("inf")
mod = 10**9 + 7
# from decimal import *
S = eval(input())
Q = INT()
q = deque(S)
flg = 1
for _ in range(Q):
    Que = input().split()
    if Que[0] == "1":
        flg *= -1
    else:
        _, F, C = Que
        if any(int(F) * flg == x for x in [2, -1]):
            q.append(C)
        else:
            q.appendleft(C)
ans = "".join(q)
if flg == -1:
    ans = ans[::-1]
print(ans)

-    return int(input()) +    return int(eval(input())) -    return map(int, input().split()) +    return list(map(int, input().split())) -    return zip(*(MAP() for _ in range(n))) +    return list(zip(*(MAP() for _ in range(n)))) -S = input() +S = eval(input()) -if flg == 1: -    print(*q, sep="") -else: -    print(*list(q)[::-1], sep="") +ans = "".join(q) +if flg == -1: +    ans = ans[::-1] +print(ans)