두 식 (((x)+(y))(t)) 와 (x+y)t 는 서로 같은 식이다. 어떤 식이 주어졌을 때, 식의 값을 바꾸지 않는 한도에서 괄호를 최대한 많이 제거한 결과를 출력하는 프로그램을 작성하시오.
식은 덧셈과 곱셈만으로 이루어지며, 변수는 모두 알파벳 소문자 한 글자이다. 식은 다음 문법으로 정의된다.
E : P | P '+' E
P : F | F P
F : V | '(' E ')'
V : 'a' | 'b' | ... | 'z'
덧셈과 곱셈에는 결합법칙을 사용할 수 있다. 즉 x+(y+z) = (x+y)+z = x+y+z 이고 x(yz) = (xy)z = xyz 이다. 그러나 교환법칙과 분배법칙은 사용할 수 없다. 연산자 우선순위는 괄호가 가장 높고, 그다음이 곱셈, 마지막이 덧셈이다.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 위 문법을 만족하는 식 하나이며, 한 줄에 하나씩 주어진다. 각 식의 길이는 최대 1000이다. 입력은 파일의 끝(EOF)까지 계속된다.
각 테스트 케이스마다, 주어진 식에서 값을 유지한 채 괄호를 최대한 제거한 식을 한 줄에 하나씩 출력한다.