#include <bits/stdc++.h>
const int mr = 2007;
const int MAXN = 100007;
const int MAXM = 2007;
const long long LLINF = 9000000000000000000;
const int INF = 2147483647;
const int MOD = 1000000007;
double eps = 0.00000001;
using namespace std;
int n, m;
char s[MAXN];
long long dp[MAXM][MAXM];
int main() {
  memset(dp, 0, sizeof(dp));
  dp[0][0] = 1;
  scanf("%d%d", &n, &m);
  scanf("%s", s);
  for (int i = 1; i <= n - m; i++) {
    for (int j = 0; j <= i; j++) {
      dp[i][j] = (dp[i][j] + dp[i - 1][j + 1]) % MOD;
      if (j > 0) dp[i][j] = (dp[i][j] + dp[i - 1][j - 1]) % MOD;
    }
  }
  int minx = INF;
  int tot = 0;
  int len = strlen(s);
  for (int i = 0; i < len; i++) {
    if (s[i] == '(') {
      tot++;
    } else {
      tot--;
    }
    minx = min(minx, tot);
  }
  long long ans = 0;
  for (int i = 0; i <= n - m; i++) {
    for (int j = max(0, -minx); j <= i; j++) {
      if (j + tot >= 0 && j + tot <= n - len - i) {
        ans = (ans + dp[i][j] * dp[n - len - i][j + tot]) % MOD;
      }
    }
  }
  printf("%I64d\n", ans);
  return 0;
}
