#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
const int MAXM = 1e5 + 5;
const int MAXK = 6e3 + 5;
const int BASE = 3e3;
const int MO = 1e9 + 7;
int n, m, k;
char s[MAXN];
int f[MAXK][MAXK];
int main() {
  scanf("%d%d", &n, &m);
  k = n - m;
  scanf("%s", s);
  f[0][0] = 1;
  for (int i = 1; i <= k; ++i) {
    for (int j = 0; j <= i; ++j) {
      f[i][j] = f[i - 1][j + 1];
      if (j - 1 >= 0) f[i][j] += f[i - 1][j - 1];
      if (f[i][j] > MO) f[i][j] -= MO;
    }
  }
  int l = 0, r = 0, error = 0;
  for (int i = 0; i < m; ++i) {
    if (s[i] == '(')
      ++l;
    else
      ++r;
    error = max(error, r - l);
  }
  int ans = 0;
  for (int i = 0; i <= k; ++i) {
    for (int j = 0; j <= i; ++j) {
      if (j + l - r >= 0 && j >= error && j + l - r <= k - i) {
        ans = (ans + 1LL * f[i][j] * f[k - i][j + l - r] % MO) % MO;
      }
    }
  }
  cout << ans << endl;
  return 0;
}
