#include <bits/stdc++.h>
using namespace std;
long long dp1[2005][2005], dp2[2005][2005];
long long f1(int l, int v) {
  if (v > l) return 0;
  if (dp1[l][v] != -1) return dp1[l][v];
  long long res = 0;
  if (l == 0)
    res = (v == 0);
  else if (v == l)
    res = 1;
  else {
    if (v > 0) res = (res + f1(l - 1, v - 1)) % 1000000007;
    res = (res + f1(l - 1, v + 1)) % 1000000007;
  }
  return dp1[l][v] = res;
}
int main() {
  ios::sync_with_stdio(0);
  int n, m;
  cin >> n >> m;
  memset(dp1, -1, sizeof(dp1));
  int a = 0, b = 0, mdif = 1000000007;
  for (int i = (0); i < (m); i++) {
    char c;
    cin >> c;
    if (c == '(')
      a++;
    else
      b++;
    mdif = min(mdif, a - b);
  }
  int p = max(0, (-1) * mdif);
  long long res = 0;
  for (int i = (0); i < (n - m + 1); i++) {
    for (int j = (0); j < (i + 1); j++) {
      long long c =
          (f1(i, p + j) * f1(n - m - i, abs(a - b + p + j))) % 1000000007;
      res = (res + c) % 1000000007;
    }
  }
  cout << (res % 1000000007) << endl;
  return 0;
}
