#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-8;
long long dp[2005][2005][2];
int n, m, rem, mx;
long long memo(int indx, int cnt, bool flag) {
  if (indx == n - m + 1) return (flag && !cnt);
  if (indx > n - m + 1 || cnt < 0 || cnt > 2000) return 0;
  long long &ret = dp[indx][cnt][flag];
  if (ret != -1) return ret;
  ret = memo(indx + 1, cnt + 1, flag);
  ret += memo(indx + 1, cnt - 1, flag);
  if (!flag && cnt - mx >= 0) {
    ret += memo(indx + 1, cnt - rem, 1);
  }
  return ret %= 1000000007;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  ;
  memset(dp, -1, sizeof(dp));
  string s;
  cin >> n >> m >> s;
  for (int i = 0; i < m; i++) {
    if (s[i] == ')')
      rem++;
    else
      rem--;
    mx = max(mx, rem);
  }
  cout << memo(0, 0, 0) << endl;
  return 0;
}
