#include <bits/stdc++.h>
using namespace std;
const long long inf = 1000000000000000000;
const long long KOK = 100000;
const long long LOG = 30;
const long long li = 2005;
const long long mod = 1000000007;
long long n, m, b[li], a[li], k, flag, t, dp[li][li];
long long ans, answer;
string s;
vector<long long> v;
inline long long add(long long x, long long y) {
  if (x + y >= mod) return x + y - mod;
  return x + y;
}
inline long long mul(long long x, long long y) {
  return (x % mod) * (y % mod) % mod;
}
int32_t main(void) {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> m >> s;
  dp[0][0] = 1;
  for (long long i = 1; i <= n - m; i++) {
    dp[i][0] = dp[i - 1][1];
    for (long long j = 1; j <= 2000; j++) {
      dp[i][j] = add(dp[i - 1][j - 1], dp[i - 1][j + 1]);
    }
  }
  long long cur = 0;
  for (long long i = 0; i < m; i++) {
    if (s[i] == '(')
      cur++;
    else
      cur--;
    ans = min(ans, cur);
  }
  for (long long i = 0; i <= n - m; i++) {
    for (long long j = 0; j <= 2000; j++) {
      if (j < -ans) continue;
      if (j + cur > 2000) continue;
      answer = add(answer, mul(dp[i][j], dp[n - m - i][j + cur]));
    }
  }
  cout << answer;
  return 0;
}
