#include<iostream>
#include<stack>
#include<string>
#include<deque>
using namespace std;
char compare(char tp, char op)
{
if (((tp == '+' || tp == '-') && (op == '*' || op == '/')) || (tp == '#'))
return '<';
else if (tp == '('&&op != ')')
return '<';
else if ((tp == '*' || tp == '/' || tp == '+' || tp == '-') && (op == '('))
return '<';
return '>';
}
int main()
{
stack<char>num;
stack<char>oper;
oper.push('#');
string s;
cin >> s;
for (int i = 0; i<s.length(); i++)
{
if (s[i] == '0' || s[i] == '1' || s[i] == '2' || s[i] == '3' || s[i] == '4' || s[i] == '5' || s[i] == '6' || s[i] == '7' || s[i] == '8' || s[i] == '9')
num.push(s[i]);
else
{
char comp = compare(oper.top(), s[i]);
if (comp == '<')
oper.push(s[i]);
else if (comp == '>')
{
if (s[i] == ')')
{
while (oper.top() != '(')
{
num.push(oper.top());
oper.pop();
}
oper.pop();
}
else
{
num.push(oper.top());
oper.pop();
oper.push(s[i]);
}
}
}
}
while (oper.top() != '#')
{
num.push(oper.top());
oper.pop();
}
deque<char> d;
while (num.size() != 0)
{
d.push_front(num.top());
num.pop();
}
for (auto i = d.begin(); i != d.end(); i++)
cout << *i;
cout << endl;
return 0;
}