#include<iostream>
#include<stack>
using namespace std;
bool p[5][5]=
{
1,1,0,0,1,
1,1,0,0,1,
1,1,1,1,1,
1,1,1,1,1,
0,0,0,0,1
};
int con(char ch)
{
switch(ch)
{
case'+': return 0;
case'-': return 1;
case'*': return 2;
case'/': return 3;
case'#': return 4;
}
}
int main()
{
char s[21];
stack<char> op;
cin>>s;
int i=0;
op.push('#');
while(s[i]=='(')
{
op.push(s[i]);
++i;
}
if(s[i]=='+'||s[i]=='-')
{
cout<<s[i];
++i;
}
while((s[i]>='0'&&s[i]<='9')||s[i]=='.')
{
cout<<s[i];
++i;
}
while(s[i]!='\0')
{
if(s[i]=='(')
{
op.push('(');
++i;
if(s[i]=='+'||s[i]=='-')
{
++i;
}
}
else if(s[i]==')')
{
while(op.top()!='(')
{
cout<<' '<<op.top();
op.pop();
}
op.pop();
++i;
}
else if(s[i]<='9'&&s[i]>='0')
{
cout<<' ';
if(s[i-2]=='('&&s[i-1]=='-') cout<<'-';
while((s[i]<='9'&&s[i]>='0')||s[i]=='.')
{
cout<<s[i];
++i;
}
}
else
{
while(op.top()!='('&&p[con(op.top())][con(s[i])]==1)
{
cout<<' '<<op.top();
op.pop();
}
op.push(s[i]);
++i;
}
}
while(op.top()!='#')
{
cout<<' '<<op.top();
op.pop();
}
}