#! /usr/bin/python
## requires v2.5 or higher.  Syntax issue, so can't check at runtime.
import sys
l=lambda a,c:(c,lambda _,c2:(c2,a))
q=lambda a,k:(k,lambda a2,k2:(k2,lambda a3,k3:(dsc,(((a,a3),(a2,a3)),k3))))
w=lambda a,k:(k,a)
m=lambda _,k:(k,m)
c=lambda a,k:a(lambda a2,_:(k,a2),k)
e=lambda a,_:sys.exit(a!=w)
d=lambda a,k:(k,a)
pch=lambda c:lambda a,k: sys.stdout.write(c) or (k,a)
cmpch=lambda c:lambda a,k: (a(w,k) if c==rc.c else a(m,k))
rp=lambda a,k:(a(pch(rc.c),k) if rc.c else a(m,k))
def rc(a,k):
    rc.c=sys.stdin.read(1)
    return (a(w,k) if rc.c else a(m,k))
rc.c=''

ta={'.':pch,'?':cmpch}
no={'|':rp,'@':rc,'s':q,'k':l,'c':c,'e':e,'i':w,'v':m,'r':pch('\n'),'d':d}

def bt(inp):
    st, i2, as, tot=[], [], 0, 0
    while tot!=2*as + 1:
        c=inp.read(1).lower()
        if not c: raise EOFError
        tot+=1
        if c=='#':
            while c != '\n': c=inp.read(1)
        if c in ta: i2.append(ta[c](inp.read(1)))
        elif c in no: i2.append(no[c])
        elif c=='`':
            i2.append(c)
            as+=1
        else: tot-=1
    while i2:
        x=i2.pop()
        if x=='`':
            l=st.pop()
            st.append((l,st.pop()))
        else: st.append(x)
    return st[0]

dsc=lambda ((tr,ct)): ((dsc, (tr[0], lambda lv: (ct(lambda rval, k: (dsc, (tr[1], lambda lval: lval(rval, k)))) if lv==d else (dsc, (tr[1], lambda rv: lv(rv, ct)))))) if isinstance(tr, tuple) else (ct, tr))

if __name__=='__main__':
    k,a=dsc((bt(open(sys.argv[1]) if len(sys.argv)==2 else sys.stdin), lambda x: sys.exit(x!=w)))
    while 1:k,a=k(a)

