#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000 * 1000 * 1000 + 7;
int dp[2010][2010];
int main() {
  dp[0][0] = 1;
  for (int len = 0; len <= 2005; len++) {
    for (int balance = 0; balance <= len; balance++) {
      dp[len + 1][balance + 1] += dp[len][balance];
      if (dp[len + 1][balance + 1] >= MOD) {
        dp[len + 1][balance + 1] -= MOD;
      }
      if (balance > 0) {
        dp[len + 1][balance - 1] += dp[len][balance];
        if (dp[len + 1][balance - 1] >= MOD) {
          dp[len + 1][balance - 1] -= MOD;
        }
      }
    }
  }
  int n, m;
  cin >> n >> m;
  string s;
  cin >> s;
  int balance = 0;
  int minPrefBalance = 0;
  int totalBalance;
  for (int i = 0; i < m; i++) {
    if (s[i] == '(')
      balance++;
    else
      balance--;
    minPrefBalance = min(minPrefBalance, balance);
  }
  totalBalance = balance;
  balance = 0;
  int minSuffBalance = 0;
  for (int i = m - 1; i >= 0; i--) {
    if (s[i] == ')')
      balance++;
    else
      balance--;
    minSuffBalance = min(minSuffBalance, balance);
  }
  minPrefBalance *= -1;
  minSuffBalance *= -1;
  long long ans = 0;
  for (int leftLen = 0, rightLen = n - m; rightLen >= 0;
       leftLen++, rightLen--) {
    long long add = 0;
    for (int leftBalance = minPrefBalance; leftBalance <= leftLen;
         leftBalance++) {
      int rightBalance = leftBalance + totalBalance;
      if (rightBalance < minSuffBalance) {
        continue;
      }
      if (rightBalance > rightLen) {
        continue;
      }
      int leftAns = dp[leftLen][leftBalance];
      int rightAns = dp[rightLen][rightBalance];
      add += (long long)leftAns * rightAns;
      add %= MOD;
    }
    ans += add;
    ans %= MOD;
  }
  cout << ans << endl;
}
