#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 500 + 5;
const ll mod = 1e9 + 7;
ll n, k, f[N][N][3], ok[N][N], sum[N];
string s;
int main() {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> n >> k >> s;
s = "." + s + ".";
for (int i = 1; i <= n; ++i) {
for (int j = i; j <= i + k - 1 && j <= n; ++j) {
if (s[j] == '*' || s[j] == '?') ok[i][j] = 1;
else break;
}
}
for (int j = 2; j <= n; ++j) {
for (int l = 1; l + j - 1 <= n; ++l) {
int r = l + j - 1;
if ((s[l] != '(' && s[l] != '?') || (s[r] != ')' && s[r] != '?')) continue;
if (j == 2) {
f[l][r][1] = 1;
continue;
}
f[l][r][1] = ok[l + 1][r - 1];
f[l][r][1] = (f[l][r][1] + f[l + 1][r - 1][1] + f[l + 1][r - 1][2]) % mod;
for (int i = l + 1; i <= l + 1 + k - 1 && i <= r - 3; ++i) f[l][r][1] = (f[l][r][1] + ok[l + 1][i] * (f[i + 1][r - 1][1] + f[i + 1][r - 1][2])) % mod;
for (int i = r - 1; i >= r - 1 - k + 1 && i >= l + 3; --i) f[l][r][1] = (f[l][r][1] + ok[i][r - 1] * (f[l + 1][i - 1][1] + f[l + 1][i - 1][2])) % mod;
for (int i = l + 1; i <= r - 2; ++i) f[l][r][2] = (f[l][r][2] + f[l][i][1] * (f[i + 1][r][1] + f[i + 1][r][2])) % mod;
ll cnt = 0;
memset(sum, 0, sizeof(0));
for (int i = r; i >= l; --i) {
if (s[i + 1] != '?' && s[i + 1] != '*') cnt = 0;
else if (cnt < k) {
if (i + 2 > r) continue;
sum[i] = (sum[i + 1] + f[i + 2][r][1] + f[i + 2][r][2]) % mod;
++cnt;
} else {
sum[i] = (sum[i + 1] + f[i + 2][r][1] + f[i + 2][r][2] - f[i + 2 + k][r][1] - f[i + 2 + k][r][2] + mod) % mod;
}
}
for (int i = l + 1; i <= r - 3; ++i) {
f[l][r][2] = (f[l][r][2] + f[l][i][1] * sum[i]) % mod;
}
}
}
cout << (f[1][n][1] + f[1][n][2]) % mod << endl;
return 0;
}