시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 128 MB 3 0 0 0.000%

문제

알파벳 소문자, +, -, *(곱하기), /(나누기), 그리고 괄호로 이루어진 수식을 생각하자. 보다 엄밀하게, 그리고 귀납적으로 다음과 같이 정의할 수 있다.

(1) 알파벳 소문자들은 <문자>이다.
  (2) <항>, <수식>+<항>, <수식>-<항>은 모두 <수식>이다.
  (3) <인자>, <항>*<인자>, <항>/<인자>는 모두 <항>이다.
  (4) <문자>, (<수식>)은 모두 <인자>이다.

즉, 알파벳 소문자들이 <문자>인 것이고, <수식>에 괄호를 친 것들과 <문자>들이 <인자>인 것이고, <인자>들이 *나 /로 연결된 것들이 <항>인 것이고, <항>들이 +나 -로 연결된 것들이 <수식>인 것이다. 잘 따져보면 우리가 일반적으로 생각하는 수식들이 이 규칙에 꼭 맞게 들어맞는 것을 알 수 있다.

이러한 수식에서 최대한 많은 괄호를 제거하려 한다. 괄호를 제거하는 규칙들은 다음과 같다.

(1) A, B가 <수식>인 경우, A+(B)는 A+B로 고칠 수 있다.
  (2) A, B가 <수식>인 경우, A-(B)는 A-C로 고칠 수 있다. C는 B에서 +와 -를 뒤바꿔야 하는 경우들을 뒤바꾼 것이다.
  (3) A, B가 <항>인 경우, A*(B)는 A*B로 고칠 수 있다.
  (4) A, B가 <항>인 경우, A/(B)는 A/C로 고칠 수 있다. C는 B에서 *와 /를 뒤바꿔야 하는 경우들을 뒤바꾼 것이다.

각 경우의 예제들은 다음과 같다.

(1) a-g/h+(b+c-d+e*(f+h-i))는 a-g/h+b+c-d+e*(f+h-i)로 고칠 수 있다.
  (2) a-g/h-(b+c-d+e*(f+h-i))는 a-g/h-b-c+d-e*(f+h-i)로 고칠 수 있다.
  (3) x/(y+z)*(a*(b-c)/d/(e/f))는 x/(y+z)*a*(b-c)/d/(e/f)로 고칠 수 있다.
  (4) x/(y+z)/(a*(b-c)/d/(e/f))는 x/(y+z)/a/(b-c)*d*(e/f)로 고칠 수 있다.

당신은 이런 규칙들을 최대한 많이 적용하여, 최소 개수의 괄호만을 남기려고 한다. 수식이 주어졌을 때, 최소 개수의 괄호만 남아있는 수식을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 길이가 1,000을 넘지 않는 수식이 공백 없이 주어진다.

출력

첫째 줄에 최소 개수의 괄호만 남아있는 수식을 공백 없이 출력한다.

예제 입력

((a-b)-(c-d)-(z*z*g/f)/(p*(t))*((y-u)))

예제 출력

a-b-c+d-z*z*g/f/p/t*(y-u)

힌트