题号:NC285654
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述

小苯有一个只含有

和
%22%7D)
括号串

。

原本的

是
合法的括号序列,但粗心的小苯不小心将其打乱了,导致有一些位置的括号变成相反的括号,比如有些位置原本是

,打乱后变成了
%22%7D)
;有些位置本身是
%22%7D)
,打乱后变成了

。

现在小苯只记得打乱后的括号结果

,他想将

复原为

,但有可能复原结果不唯一,请你帮帮他吧。(如果不存在合法的复原结果,则说明小苯记错了

的样子,输出

即可。)
合法括号串的定义:

如果在括号序列中插入字符

和

就可以得到正确的算术表达式,那么这个括号序列就称为
合法的括号序列。例如,

、
)%22%7D)
和
()%22%7D)
是
合法的括号序列,因为填入内容后可以表示为

、
)%22%7D)
和
%2B(1)%22%7D)
。

更严格地,一个括号序列被称为
合法的括号序列,当且仅当:

空串是合法的括号序列;

如果

是合法的括号序列,那么
%22%7D)
也是合法的括号序列;

如果

和

都是合法的括号序列,那么

也是合法的括号序列。
输入描述:

每个测试文件均包含多组测试数据。第一行输入一个整数
)
代表数据组数,每组测试数据描述如下:

在一行上输入一个长度不超过

,仅由

和
%22%7D)
组成的括号串

代表打乱后的括号序列。

除此之外,保证单个测试文件的

的字符数量之和不超过

。
输出描述:

对于每一组测试数据:

如果复原结果唯一,则输出这个唯一的复原结果,即

括号串。

如果复原结果不唯一,则输出

。

如果不存在任何合法的复原结果,则输出

。
示例1
输入
复制
3
((
)
())(()()()())))((()())()
输出
复制
()
-1
There are multiple solutions