local read = setmetatable({}, {__index = function(t, k) local a = {} for i=1,#k do table.insert(a, '*'..string.sub(k, i, i)) end local r = io.read local u = table.unpack or unpack return function() return r(u(a)) end end})
read.N = function(N) local t={} for i=1,N do t[i]=read.n() end return t end
string.totable = function(s) local t={} local u=string.sub for i=1,#s do t[i] = u(s, i, i) end return t end
string.split = function(s) local t={} for w in string.gmatch(s, "[^%s]+") do table.insert(t, w) end return (table.unpack or unpack)(t) end
local function array(dimension, default_val) local n=dimension local m={}if default_val~=nil then m[1]={__index=function()return default_val end}end for i=2,n do m[i]={__index=function(p, k)local c=setmetatable({},m[i-1])rawset(p,k,c)return c end}end return setmetatable({},m[n])end
----
local S = read.l():totable()
local Q = read.nl()
local rev = false
local front = 0
local back = #S+1
for i=1,Q do
    local q = read.l()
    if q == "1" then
        rev = not rev
    else
        local t, f, c = q:split()
        local ins_front = f == '1'
        if rev then
            ins_front = not ins_front
        end
        if ins_front then
            S[front] = c
            front = front - 1
        else
            S[back] = c
            back = back + 1
        end
    end
end
local ans = {}
for i=front+1,back-1 do
    table.insert(ans, S[i])
end
print(table.concat(ans, ""))