#include<bits/stdc++.h>
using namespace std;
long long dp[505][505][6];
const int md=1e9+7;
string s;
bool check(int l,int r){
if((s[l-1]=='?'||s[l-1]=='(')&&(s[r-1]=='?'||s[r-1]==')')){
return 1;
}
return 0;
}
int main(){
int n,k;
scanf("%d%d",&n,&k);
cin>>s;
for(int i=1;i<=n;i++){
dp[i][i-1][0]=1;
}
for(int i=1;i<=n;i++){
for(int j=1;j+i-1<=n;j++){
if(i<=k&&(s[j-1]=='?'||s[j-1]=='*')){
dp[j][j+i-1][0]=dp[j+1][j+i-1][0];
}
if(i>=2){
if(check(j,j+i-1)){
dp[j][j+i-1][1]=dp[j+1][j+i-2][0]+dp[j+1][j+i-2][2]+dp[j+1][j+i-2][3]+dp[j+1][j+i-2][4];
dp[j][j+i-1][1]%=md;
}
for(int k=j;k<j+i-1;k++){
dp[j][j+i-1][2]+=dp[j][k][3]*dp[k+1][j+i-1][0];
dp[j][j+i-1][2]%=md;
dp[j][j+i-1][3]+=(dp[j][k][2]+dp[j][k][3])*dp[k+1][j+i-1][1];
dp[j][j+i-1][3]%=md;
dp[j][j+i-1][4]+=dp[j][k][0]*(dp[k+1][j+i-1][3]+dp[k+1][j+i-1][4]);
dp[j][j+i-1][4]%=md;
dp[j][j+i-1][5]+=dp[j][k][0]*dp[k+1][j+i-1][2];
dp[j][j+i-1][5]%=md;
}
}
dp[j][j+i-1][5]=dp[j][j+i-1][5]+dp[j][j+i-1][0];
dp[j][j+i-1][5]%=md;
dp[j][j+i-1][3]=dp[j][j+i-1][3]+dp[j][j+i-1][1];
dp[j][k+i-1][3]%=md;
}
}
printf("%lld",dp[1][n][3]);
return 0;
}