#include <iostream>
#include <map>
#include <stack>
#include <string>
using namespace std;
map<char,int> priorityIn{
{'+',3},
{'-',3},
{'*',5},
{'/',5},
{'(',1},
{')',6}
};
map<char,int> priorityOut{
{'+',2},
{'-',2},
{'*',4},
{'/',4},
{'(',6},
{')',1}
};
int main()
{
string in;
stack<char> op;
char c;
map<char, int>::iterator iter;
cin >> in;
for (int i = 0; i < in.length(); ++i)
{
c = in[i];
iter = priorityIn.find(c);
if (iter != priorityIn.end())
{
if (op.empty())
op.push(c);
else
{
if (priorityOut.at(c) >= priorityIn.at(op.top()))
op.push(c);
else
{
while(!op.empty() && priorityOut.at(c) < priorityIn.at(op.top()))
{
cout << op.top();
op.pop();
}
if (c == ')')
op.pop();
else
op.push(c);
}
}
}
else
cout << c;
}
while(!op.empty())
{
cout << op.top();
op.pop();
}
return 0;
}