#include <bits/stdc++.h>
using namespace std;
const int maxn = 2100;
const int maxlen = 1e5 + 1e2;
const int modu = 1e9 + 7;
int n, m;
char s[maxlen];
int st[maxlen], t;
__inline int id(char c) { return c == '(' ? 1 : -1; }
int d[maxn][maxn][2];
void up(int& a, int b) { a = (a + b) % modu; }
int main(int argc, char* argv[]) {
  cin >> n >> m;
  scanf("%s", s + 1);
  for (int i = 1; i <= m; i++) {
    int now = id(s[i]);
    if (now == 1)
      st[++t] = now;
    else {
      if (t && st[t] == 1)
        t--;
      else
        st[++t] = now;
    }
  }
  int l = 0, r = 0;
  for (int i = 1; i <= t; i++)
    if (st[i] == -1)
      l++;
    else
      r++;
  n = n - m;
  d[0][0][0] = 1;
  for (int i = 0; i <= n; i++)
    for (int k = 0; k < 2; k++)
      for (int j = 0; j <= n; j++) {
        int now = d[i][j][k], jj;
        if (!now) continue;
        for (int p = -1; p <= 1; p += 2) {
          jj = j + p;
          if (jj < 0 || jj > n) continue;
          up(d[i + 1][jj][k], now);
        }
        if (!k) {
          if (j < l) continue;
          jj = j - l + r;
          if (jj < 0 || jj > n) continue;
          up(d[i][jj][1], now);
        }
      }
  printf("%d\n", d[n][0][1]);
  return 0;
}
