随着爸爸的生日即将到来,zz 决定给爸爸买一件礼物。考虑到爸爸的爱好,zz决定买一根由n个圆括号组成的绳子!
当且仅当满足以下条件时,括号序列是合法序列,才能组成绳子:
左括号的总数等于右括号的总数;
对于序列的任何前缀,左括号的数量大于或等于右括号的数量。
zz买了一根长m的绳子(m≤n)他将挑选一些由圆括号组成的字符串p和q,并将它们合并为字符串p+s+q,即在字符串s的开头添加字符串p,在字符串s结尾添加字符串q。
现在他想知道,有多少对字符串p和q存在,使得字符串p+s+q是一个合法的圆括号序列。由于这个数字可能非常大,他想以10^9+7为模计算。
第一行包含n和m(1≤m≤n≤100000,n-m≤2000)− 所需的字符串长度和zz购买的字符串长度。
第二行包含长度为m的字符串s,仅由字符“(” 和 “)”组成。
打印字符串p和q的对数,使得p+s+q是以10^9+7为模的圆括号的有效序列。
4 1 (
4
4 4 (())
1
4 3 (((
0
4 1
(
4