//根据后缀表达式建立二叉树
#include <iostream>
#include<stack>
#include<string>
using namespace std;
class Note
{
public:
    char d;
    Note *Lchild;
    Note *Rchild;
    Note()
    {
        Lchild=NULL;
        Rchild=NULL;
    }
};

stack<Note *> sta;
string data;
void make_tree(char a)
{
    Note *t;
    if(a>='0'&&a<='9')
    {
        t=new Note;
        t->d=a;
        sta.push(t);
    }
    else
    {
        t=new Note;
        t->d=a;
        t->Rchild=sta.top();
        sta.pop();
        t->Lchild=sta.top();
        sta.pop();
        sta.push(t);
    }
}
bool print(char e)
{
    cout<<e;
    return true;
}
bool print_tree(Note *head,bool (*visit)(char e))
{
    if(head)
    {
        if(visit(head->d))
            if(print_tree(head->Lchild,print))
                if(print_tree(head->Rchild,print))
                    return true;
        return false;
    }
    else
        return true;
}
bool delete_tree(Note *head)
{
    if(head)
    {
        if(delete_tree(head->Lchild))
            return true;
        else
        {
            delete head;
            return false;
        }
        if(delete_tree(head->Rchild))
              return true;
        else
        {
            delete head;
            return false;
        }
        delete head;
    }

    return true;
}
int main()
{

    cin>>data;
    Note *head;
    for(unsigned int i=0;i<data.length();i++)
    {
        make_tree(data[i]);
    }
    head=sta.top();
    sta.pop();
    print_tree(head,print);
    delete_tree(head);


    return 0;
}