#include <iostream>
#include <vector>
using namespace std;
struct node {
char c;
node *l;
node *r;
node(char x) : c(x), l(nullptr), r(nullptr) {}
};
node* buildTree(int &pos, string str) {
if (pos >= str.size() || str[pos] == '#') {
return nullptr;
}
node *t = new node(str[pos]);
pos++;
t-> l = buildTree(pos, str);
pos++;
t-> r = buildTree(pos, str);
return t;
}
void midOrder(vector<char> &ans, node *root) {
if (root == nullptr) return;
midOrder(ans, root->l);
ans.emplace_back(root->c);
midOrder(ans, root->r);
}
int main() {
string str;
cin >> str;
int pos = 0;
node *root = buildTree(pos, str);
vector<char> ans;
midOrder(ans, root);
for (const auto& i : ans) {
cout << i << " ";
}
return 0;
}