考古学家在 Alutila 洞穴的深层地层中发现了令人兴奋的泥板。除了两个似乎描述了嵌套结构的符号(类似于 LISP 中的左括号和右括号)外,没有人能够破译泥板上的文字。难道几千年前人类就已经在编写程序了吗?
总的来说,这些泥板似乎描述了一部伟大的作品——也许是一个程序,一部史诗,甚至是税务记录!不出所料,经过如此漫长的岁月,这些泥板处于混乱状态。你的任务是将它们排列成一个序列,使得最终的作品具有合法的嵌套括号结构。仅考虑左括号和右括号,合法的嵌套结构定义如下:
(),或者(A),其中 $A$ 是一个合法的嵌套结构,或者AB,其中 $A$ 和 $B$ 是合法的嵌套结构。
带有未破译文字的泥板。来源:维基共享资源
输入格式
输入的第一行包含一个整数 $n$ ($1 \le n \le 10^6$),表示泥板的数量。接下来的 $n$ 行,每行描述一块泥板,包含一个非空的左括号和右括号字符串;与嵌套结构无关的符号已被省略。字符串按其在输入中出现的顺序编号为 $1$ 到 $n$。输入中总共包含最多 $10^7$ 个括号。
输出格式
输出一个 $1$ 到 $n$ 的排列,使得按此顺序连接这些字符串后,结果是一个合法的嵌套结构。如果存在多个这样的排列,输出其中任意一个即可。如果不存在这样的排列,则输出 impossible。
样例
样例输入 1
2 ())())() ((()
样例输出 1
2 1
样例输入 2
5 ( )) (( )) (
样例输出 2
1 5 3 2 4
样例输入 3
2 (( )
样例输出 3
impossible