#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main(void){
int i;
string str;//输入
string s;//表达式
stack<char> stk;
cin>>str;
for(i=0;str[i]!='\0';i++){
if('0'<= str[i] && str[i]<= '9'){ // 数字直接放进后序表达式
s.push_back(str[i]);
}
else if(str[i]=='('){//左括号 入栈
stk.push('(');
}
else if(str[i]==')'){//右括号 把左括号之前的都放进后序表达式,然后左括号出栈
while(stk.top()!='('){
s.push_back(stk.top());
stk.pop();
}
stk.pop();
}
else if(str[i]=='+' || str[i]=='-'){// 加减 左括号以前的字符依次出栈 并放进后序表达式 然后把加减压栈
while(stk.top()!='(' && !stk.empty()){ //这里一定要判断栈是否为空 不然如果遇到 + -号前面没有括号 就会异常 终止
s.push_back(str[i]);
stk.pop();
}
stk.push(str[i]);
}
else if(str[i]=='*' || str[i]=='/'){ //乘除 将顶端的 * / 出栈 并且放进后序表达式 然后将 * / 压栈
if(!stk.empty()){ //这里一定要判断 栈是否为空 否者访问栈顶会异常 程序会终止!!!!
while(stk.top()=='*' || stk.top()=='/'){
cout<<"!!"<<endl;
s.push_back(stk.top());
stk.pop();
}
}
stk.push(str[i]);
}
}
while(!stk.empty()){ //字符串读取完毕 把栈里面的剩余运算符出栈 并且放入后续表达式
s.push_back(stk.top());
stk.pop();
}
cout<<s<<endl; //输出后续表达式
return 0;
}