1 import java.util.Scanner;
2
3 class Read{
4 String s;
5 Read(String a){
6 s = a;
7 }
8 int pos = 0;
9 char ReadChar(){
10 pos++;
11 return s.charAt(pos-1);
12 }
13 }
14 class queue{
15 Tree[] arr = new Tree[1000];
16 int f = 0;
17 int r = 0;
18 int empty(){
19 return f==r?1:0;
20 }
21 Tree front(){
22 return arr[f];
23 }
24 void pop(){
25 f++;
26 }
27 void push(Tree t){
28 arr[r++] = t;
29 }
30 }
31 class stack{
32 Tree[] arr = new Tree[1000];
33 int t = 0;
34 int empty(){
35 return t==0?1:0;
36 }
37 Tree top(){
38 return arr[t-1];
39 }
40 void pop(){
41 t--;
42 }
43 void push(Tree a){
44 arr[t++]=a;
45 }
46 }
47 class Tree{
48 char data;
49 Tree lchild,rchild;
50 int nc = 0;
51 static Tree build(Read s){
52 char c = s.ReadChar();
53 if(c=='#')
54 return null;
55 Tree t = new Tree();
56 t.data = c;
57 t.lchild = build(s);
58 t.rchild = build(s);
59 return t;
60 }
61 void qian(){
62 System.out.print(data);
63 if(lchild!=null)
64 lchild.qian();
65 if(rchild!=null)
66 rchild.qian();
67 }
68 void zhong(){
69 if(lchild!=null)
70 lchild.zhong();
71 System.out.print(data);
72 if(rchild!=null)
73 rchild.zhong();
74 }
75 void hou(){
76 if(lchild!=null)
77 lchild.hou();
78 if(rchild!=null)
79 rchild.hou();
80 System.out.print(data);
81 }
82 void ceng(){
83 queue que = new queue();
84 que.push(this);
85 while(que.empty()==0){
86 Tree temp = que.front();
87 que.pop();
88 System.out.print(temp.data);
89 if(temp.lchild!=null)
90 que.push(temp.lchild);
91 if(temp.rchild!=null)
92 que.push(temp.rchild);
93 }
94 }
95
96 void qqian(){
97 stack st = new stack();
98 Tree t = this;
99 while(t!=null || st.empty()==0){
100 if(t!=null)
101 {
102 System.out.print(t.data);
103 st.push(t);
104 t = t.lchild;
105 }
106 else
107 {
108 t = st.top();
109 st.pop();
110 t = t.rchild;
111 }
112 }
113 }
114 void zzhong(){
115 stack st = new stack();
116 Tree t = this;
117 while(t!=null || st.empty()==0){
118 if(t!=null)
119 {
120 st.push(t);
121 t = t.lchild;
122 }
123 else
124 {
125 t = st.top();
126 st.pop();
127 System.out.print(t.data);
128 t = t.rchild;
129 }
130 }
131 }
132 void hhou(){
133 stack st = new stack();
134 Tree t = this;
135 do{
136 if(t!=null && t.nc==0){
137 t.nc = 1;
138 st.push(t);
139 t = t.lchild;
140 }
141 else{
142 t = st.top();
143 st.pop();
144 if(t.nc==1){
145 t.nc = 2;
146 st.push(t);
147 t = t.rchild;
148 }
149 else{
150 System.out.print(t.data);
151 }
152 }
153 }while(st.empty()==0);
154
155 }
156 }
157 class Dada{
158 public static void main(String[] args){
159 Scanner sc = new Scanner(System.in);
160 String s = sc.nextLine();
161 Read str = new Read(s);
162 Tree t = Tree.build(str);
163 t.qian();
164 System.out.println();
165 t.zhong();
166 System.out.println();
167 t.hou();
168 System.out.println();
169 t.ceng();
170 System.out.println();
171 t.qqian();
172 System.out.println();
173 t.zzhong();
174 System.out.println();
175 t.hhou();
176 System.out.println();
177 }
178 }