Mirko 在化学课上感到无聊,于是在手机上玩起了游戏。不幸的是,他被老师抓到了,并被布置了一份多得荒谬的家庭作业。
给定一个合法的数学表达式,其中包含若干对括号。Mirko 需要找出通过删除若干对匹配的括号(至少删除一对)所能得到的所有不同的表达式。如果两个表达式在任意位置上的字符不同,则认为它们是不同的。
例如,给定表达式 (2+(2*2)+2),我们可以得到 (2+2*2+2)、2+(2*2)+2 和 2+2*2+2。而 (2+2*2)+2 和 2+(2*2+2) 是无法得到的,因为这需要拆散不匹配的括号。同一个表达式部分可以被多层括号嵌套。
输入格式
输入仅一行,包含一个合法的数学表达式。该表达式由非负整数、基本算术运算符(+、-、*、/)以及括号(( 和 ))组成。
给定的表达式长度不超过 $200$ 个字符,且包含至少 $1$ 对、至多 $10$ 对括号。
输出格式
按字典序升序输出所有可以通过删除至少一个合法括号对得到的所有不同的表达式。
样例
输入样例 1
(0/(0))
输出样例 1
(0/0) 0/(0) 0/0
输入样例 2
(2+(2*2)+2)
输出样例 2
(2+2*2+2) 2+(2*2)+2 2+2*2+2
输入样例 3
(1+(2*(3+4)))
输出样例 3
(1+(2*3+4)) (1+2*(3+4)) (1+2*3+4) 1+(2*(3+4)) 1+(2*3+4) 1+2*(3+4) 1+2*3+4