#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
long long dp[3001][4001];
int ad = 0;
int n, m;
long long go(int i, int p) {
  if (i == 0 && p == 0) return 1;
  if (i == 0 || p < 0) return 0;
  if (dp[i][p] != -1) return dp[i][p];
  long long v = 0;
  v += go(i - 1, p - 1);
  v += go(i - 1, p + 1);
  return dp[i][p] = v % MOD;
}
int main() {
  cin >> n >> m;
  for (int i = 0; i <= n - m; i++)
    for (int j = 0; j <= 2 * (n - m); j++) {
      dp[i][j] = -1;
    }
  int mina = m + 1;
  for (int i = 0; i < m; i++) {
    char q;
    cin >> q;
    if (q == '(')
      ad++;
    else
      ad--;
    mina = min(mina, ad);
  }
  long long r = 0;
  for (int i = 0; i <= n - m; i++) {
    for (int j = 0; j <= i; j++) {
      if (j >= -mina && j + ad <= n - m && j + ad >= 0) {
        r += go(i, j) * go(n - m - i, j + ad) % MOD;
        r %= MOD;
      }
    }
  }
  cout << r % MOD << endl;
}
