#include<iostream>
using namespace std;

struct TreeNode{
    char ch;
    TreeNode* left;
    TreeNode* right;
};
int i = 0;
void create(string &s,TreeNode *node)
{
    if(s[i] == '#'){
        if(node->ch == ' '){
            node->ch = s[i];
            i++;
        }
        return;
    }
    if(s[i] != '#'){
        if(node -> ch == ' '){
            node->ch = s[i];
            i++;
        }
        if(node -> left == nullptr) {
            node->left = new TreeNode;
            node->left->ch = ' ';
            node->left->left = nullptr;
            node->left->right = nullptr;
        }
        if(node -> right == nullptr) {
            node->right = new TreeNode;
            node->right->ch = ' ';
            node->right->left = nullptr;
            node->right->right = nullptr;
        }
        create(s, node->left);
        create(s, node->right);
    }
}

void infixOrder(TreeNode* node)
{
    if(node == nullptr || node -> ch == '#') return;;
    infixOrder(node->left);
    cout << node->ch << " ";
    infixOrder(node->right);
}

int main(void)
{
    string s;
    cin >> s;
    TreeNode* root = new TreeNode;
    root->ch = ' ';
    root ->left= nullptr;
    root-> right = nullptr;
    create(s, root);
    infixOrder(root);
    return 0;
}