#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int N = 2505;
int n, m, K, cnt, memo[N][N][2];
string s;
int dp(int quedan, int delta, bool state) {
  if (quedan == 0) {
    if (state) {
      return delta == 0;
    }
    if (delta >= K && delta + cnt == 0) {
      return 1;
    }
    return 0;
  }
  int& ret = memo[quedan][delta][state];
  if (ret != -1) {
    return ret;
  }
  int ans = 0;
  if (state) {
    if (delta + 1 <= 2001) {
      ans += dp(quedan - 1, delta + 1, true);
      ans %= mod;
    }
    if (delta - 1 >= 0) {
      ans += dp(quedan - 1, delta - 1, true);
      ans %= mod;
    }
  } else {
    ans += dp(quedan - 1, delta + 1, false);
    ans %= mod;
    if (delta - 1 >= 0) {
      ans += dp(quedan - 1, delta - 1, false);
      ans %= mod;
    }
    if (delta >= K) {
      ans += dp(quedan, delta + cnt, true);
      ans %= mod;
    }
  }
  return ret = ans;
}
int main() {
  scanf("%d %d", &n, &m);
  cin >> s;
  for (int i = 0; i < (int)(s.size()); i++) {
    cnt += (s[i] == '(') ? 1 : -1;
    K = min(K, cnt);
  }
  K = abs(K);
  memset(memo, -1, sizeof memo);
  cout << dp(n - m, 0, false) << '\n';
  return 0;
}
