#include <bits/stdc++.h>
using namespace std;
const int MAX = 2005, mod = 1e9 + 7;
long long dp[MAX][MAX], nume_reprezentativ[MAX][MAX];
int n, m, vaca, minn;
int main() {
  cin.sync_with_stdio(false);
  cin >> n >> m;
  for (int i = 1; i <= m; i++) {
    char c;
    cin >> c;
    if (c == '(')
      vaca++;
    else
      vaca--;
    minn = min(minn, vaca);
  }
  minn = -minn;
  dp[0][0] = 1;
  for (int i = 0; i <= n - m; i++)
    for (int s = 0; s <= i; s++)
      if (dp[i][s]) {
        if (s + 1 <= n - m)
          dp[i + 1][s + 1] = (dp[i][s] + dp[i + 1][s + 1]) % mod;
        if (s - 1 >= 0) dp[i + 1][s - 1] = (dp[i][s] + dp[i + 1][s - 1]) % mod;
        if (s + vaca <= n - m && s + vaca >= 0 && s >= minn) {
          nume_reprezentativ[i][s + vaca] = dp[i][s];
        }
      }
  for (int i = 0; i <= n - m; i++)
    for (int s = 0; s <= n - m; s++) {
      if (nume_reprezentativ[i][s]) {
        if (s + 1 <= n - m)
          nume_reprezentativ[i + 1][s + 1] =
              (nume_reprezentativ[i][s] + nume_reprezentativ[i + 1][s + 1]) %
              mod;
        if (s - 1 >= 0)
          nume_reprezentativ[i + 1][s - 1] =
              (nume_reprezentativ[i][s] + nume_reprezentativ[i + 1][s - 1]) %
              mod;
      }
    }
  cout << nume_reprezentativ[n - m][0];
  return 0;
}
