z '|'=' ' z c=c s#r=[x++t|x<-s,t<-m r] (s,_:'?':r)%f=m r++f s#r (s,_:r)%f=f s#r m""=[""] m('[':s)=span(/=']')s%map(:[]) m('(':s)=span(/=')')s%(words.map z) m(c:s)=([c],c:s)%(:[]) main=getLine>>=mapM putStrLn.m