问题 AP: 生日礼物

内存限制:256 MB 时间限制:1 S
题面:传统 评测方式:文本比较 上传者:
提交:9 通过:4

题目描述

    随着爸爸的生日即将到来,zz 决定给爸爸买一件礼物。考虑到爸爸的爱好,zz决定买一根由n个圆括号组成的绳子

    当且仅当满足以下条件时,括号序列是合法序列,才能组成绳子:

         左括号的总数等于右括号的总数; 

         对于序列的任何前缀,左括号的数量大于或等于右括号的数量。

    zz买了一根长m的绳子(mn)他将挑选一些由圆括号组成的字符串pq,并将它们合并为字符串p+s+q,即在字符串s的开头添加字符串p,在字符串s结尾添加字符串q

现在他想知道,有多少对字符串pq存在,使得字符串p+s+q是一个合法的圆括号序列。由于这个数字可能非常大,他想以10^9+7为模计算。

输入格式

第一行包含n和m(1mn≤100000,n-m≤2000)− 所需的字符串长度和zz购买的字符串长度。 

第二行包含长度为m的字符串s,仅由字符“(” 和  “)”组成。

输出格式

打印字符串pq的对数,使得p+s+q是以10^9+7为模的圆括号的有效序列。


Input
4 1
(
Output
4
Input
4 4
(())
Output
1
Input
4 3
(((
Output
0

注意
在第一个示例中,有四个不同的有效对:
  1. p=”, q="))"
  2. p=()”, q=")"
  3. p=“”, q="())"
  4. p=“”, q=")()"
在第二个示例中,获取所需字符串的唯一方法是选择空 p 和 q
在第三个示例中,无法获得有效的括号序列。

输入样例 复制

4 1
(

输出样例 复制

4