在 LISP 编程语言中,所有内容都写在平衡的括号内 (LIKE THIS)。这意味着 LISP 代码有时会包含很长一段连续的右括号 )))...)。对于 LISP 程序员来说,让这些右括号 ) 的数量与左括号 ( 的数量完全对应是非常繁琐的。
为了防止此类语法错误,某些 LISP 方言引入了一种魔法右括号 ],它可以根据需要替代一个或多个右括号 ),以使左括号 ( 保持平衡。但这样一来,LISP 编译器就必须计算出每个魔法括号 ] 实际上替代了多少个右括号 )。该如何计算呢?
编写一个程序,给定一个由左括号、右括号 and 魔法括号组成的字符串,计算每个出现的魔法括号所对应的左括号数量(即它所替代的右括号数量)。如果存在多种解决方案,程序只需输出其中任意一种即可。
输入格式
第一行包含两个由空格隔开的整数 $0 \le N \le 10\,000\,000$ 和 $0 \le M \le 5\,000\,000$。第一个数 $N$ 是输入字符串的长度。第二个数 $M$ 是字符串中魔法右括号的数量。
输入字符串从第二行开始,长度为 $N$,由字符 (、) 和 ] 组成。字符 ] 在该字符串中恰好出现 $M \le N$ 次。为了便于阅读,该字符串被分成多行,每行最多包含 72 个字符。
输出格式
第一行包含一个整数 0 或 1。
数字 0 表示输入无法被平衡(例如,仅由单个魔法括号 ] 组成的字符串显然无法平衡)。在这种情况下,无需进一步输出。
数字 1 表示输入可以被平衡。在这种情况下,输出接下来的 $M$ 行。
这些额外行中的第 $1$ 行包含第 $1$ 个魔法括号 ] 在输入中所替代的右括号 ) 的数量 $C_1 \ge 1$。第 $2$ 行包含第 $2$ 个 ] 所对应的数量 $C_2 \ge 1$,依此类推。
如果存在多种使给定字符串平衡的方法,您的程序可以输出其中任意一种。
样例
输入格式 1
8 2 (((((])]
输出格式 1
1 3 1
说明
样例输入描述了一个长度为 8 的字符串,其中有 2 个魔法括号。样例输出展示了平衡该输入的一种方法:第一个魔法括号对应 3 个左括号(即替代 3 个右括号),第二个魔法括号对应 1 个左括号(即替代 1 个右括号)。
事实上,去掉魔法括号并替换后的字符串 (((((())))) 是完全平衡的,其中对应于魔法括号的右括号在下文中用下划线标出:((((()))))``。