#include <iostream>
using namespace std;
#include <stack>
int Priority(char c){
switch (c) {
case '+':return 1;
case '-':return 1;
case '*':return 2;
case '/':return 2;
}
return 0;
}
void test01(){
stack<char> stc;
string s1,s2 = "";
cin >>s1;
for (int i=0;i<s1.length();i++) {
char c = s1[i];
//数字直接入栈
if (isdigit(c)){
s2+=c;
continue;
}
//如果是空栈,或者‘(’,或者运算度优先级大于栈顶
if (stc.empty() || c=='(' || Priority(c)> Priority(stc.top())){
stc.push(c);
continue;
}
//是‘)’
if (c==')'){
while(!stc.empty() && stc.top()!='('){
s2+=stc.top();
stc.pop();
}
//将‘(’出栈
stc.pop();
continue;
}
//优先级小于栈顶
while (Priority(c) <= Priority(stc.top()) && !stc.empty()){
s2+=stc.top();
stc.pop();
}
stc.push(c);
}
while (!stc.empty()){
s2+=stc.top();
stc.pop();
}
cout <<s2<<endl;
}
int main() {
test01();
std::cout << "Hello, World!" << std::endl;
return 0;
}