#include <bits/stdc++.h>
using namespace std;
const int INFint = 2e9;
const long long INF = 2e18;
const int MOD = 1e9 + 7;
const int N = 2001;
int main() {
  ios_base::sync_with_stdio(0);
  int n, m;
  cin >> n >> m;
  string s;
  cin >> s;
  int balance = 0, mn = 0;
  for (int i = 0; i < m; i++) {
    if (s[i] == '(') {
      balance++;
    } else {
      balance--;
      mn = min(mn, balance);
    }
  }
  vector<vector<long long> > dp(N, vector<long long>(N));
  dp[0][0] = 1;
  for (int i = 0; i < N - 1; i++) {
    for (int b = 0; b < N; b++) {
      if (b) {
        dp[i + 1][b - 1] += dp[i][b];
        dp[i + 1][b - 1] %= MOD;
      }
      dp[i + 1][b + 1] += dp[i][b];
      dp[i + 1][b - 1] %= MOD;
    }
  }
  mn *= -1;
  long long ans = 0;
  for (int i = 0; i <= n - m; i++) {
    for (int b = 0; b <= n - m; b++) {
      if (b + balance >= N || b + balance < 0) continue;
      if (b < mn) continue;
      ans += dp[i][b] * dp[n - m - i][b + balance] % MOD;
      ans %= MOD;
    }
  }
  cout << ans;
  fprintf(stderr, "\nTIME = %lf\n", 1.0 * clock() / CLOCKS_PER_SEC);
  ;
  return 0;
}
