|Contests||Virtual Contests||Problems||Submit||Runs Status||Rank List||Forum|
Thus, the grammar for the expressions is the following:
<expression> → <term> | <expression> + <term> | <expression> - <term>
<term> → <factor> | <term> * <factor> | <term> / <factor>
<factor> → <variable> | (<expression>)
<variable> → a | b | ... | z
Your task is to rewrite the given expression so that its semantics is not changed, but the resulting expression has the minimal number of round brackets.
You can remove any excessive brackets that do not change the order of evaluation, for example
(a + b) + (c) → a + b + c,
(a * b) / (c) → a * b / c,
and you can rewrite expressions using the following rules:
a - g / h + (b + c - d + e * (f + h - i)) → a - g / h + b + c - d + e * (f + h - i).
a - g / h - (b + c - d + e * (f + h - i)) → a - g / h - b - c + d - e * (f + h - i)).
x / (y + z) * (a * (b - c) / d / (e / f)) → x / (y + z) * a * (b - c) / d / (e / f).
x / (y + z) / (a * (b - c) / d / (e / f)) → x / (y + z) / a / (b - c) * d * (e / f).
You can think about these transformations as ones that only use "+" and "*" associativity, the fact that "-" is the reverse operation to "+", "/" is the reverse operation to "*", and nothing else.
You can apply the described transformations and remove excessive brackets as many times as you need to get the expression with the minimal number of round brackets.
The input contains a single line with the expression. Expression does not have any leading, trailing, or inner spaces and consists of at most 1000 characters.
Write to the output a single line with the same expression that is rewritten with the minimal number of round brackets. Do not write any spaces.