#include <bits/stdc++.h>
using namespace std;
const long long MAX_DIFF = 2 * 1000 + 7, DELTA = 1000 * 1000 * 1000 + 7;
long long ways[MAX_DIFF][MAX_DIFF];
int main() {
  int mainLength, partialLength, diff;
  cin >> mainLength >> partialLength;
  diff = mainLength - partialLength;
  int overallDiff = 0, peakDiff = 0;
  for (int i = 0; i < partialLength; ++i) {
    char temp;
    cin >> temp;
    if (temp == '(') {
      overallDiff++;
    } else {
      overallDiff--;
      peakDiff = min(peakDiff, overallDiff);
    }
  }
  ways[0][0] = 1;
  for (int i = 1; i < MAX_DIFF; ++i) {
    ways[i][0] = ways[i - 1][1];
    for (int j = 1; j <= i; ++j) {
      ways[i][j] = ways[i - 1][j - 1] + ways[i - 1][j + 1];
      ways[i][j] %= DELTA;
    }
  }
  long long ans = 0;
  for (int i = 0; i <= diff; ++i) {
    for (int j = peakDiff; j <= i; ++j) {
      if (peakDiff + j >= 0 and overallDiff + j <= diff) {
        ans += (ways[i][j] * ways[diff - i][overallDiff + j]) % DELTA;
        ans %= DELTA;
      }
    }
  }
  cout << ans << endl;
  return 0;
}
