#include <bits/stdc++.h>
using namespace std;
int n, m;
string a;
long long memo1[2005][2005];
long long memo2[2005][2005];
int total = 0, mn = 100000000;
long long calcMemo2(int i, int cur) {
  if (cur < 0) return 0;
  if (cur > 2000) return 0;
  if (i < 0) return 0;
  if (i == 0) {
    return cur == 0;
  }
  long long &ret = memo2[i][cur];
  if (ret != -1) return ret;
  long long c1 = calcMemo2(i - 1, cur + 1);
  long long c2 = calcMemo2(i - 1, cur - 1);
  ret = c1 + c2;
  ret %= 1000000007;
  return ret;
}
long long calcMemo1(int i, int cur) {
  if (cur < 0) return 0;
  if (i + m > n) return 0;
  long long &ret = memo1[i][cur];
  if (ret != -1) return ret;
  ret = 0;
  long long c1 = 0;
  if (cur >= 0 && cur + mn >= 0) c1 = calcMemo2(n - (m + i), cur + total);
  long long c2 = calcMemo1(i + 1, cur + 1);
  long long c3 = calcMemo1(i + 1, cur - 1);
  ret = c1 + c2 + c3;
  ret %= 1000000007;
  return ret;
}
int main() {
  ios::sync_with_stdio(0);
  cin >> n >> m;
  cin >> a;
  for (int i = 0; i < m; i++) {
    if (a[i] == '(')
      total++;
    else
      total--;
    mn = min(mn, total);
  }
  memset(memo1, -1, sizeof memo1);
  memset(memo2, -1, sizeof memo2);
  long long ans = calcMemo1(0, 0);
  cout << ans << "\n";
  return 0;
}
