#include<stdio.h>
int n,K,f1[501][501],f2[501][501],f3[501][501],f4[501][501];char s[502];
const int p=1000000007;
inline int sum(int x,int y){
return p-x>y?x+y:y-(p-x);
}
inline int pro(int x,int y){
return (long long)x*y%p;
}
int main(){
fscanf(stdin,"%d%d",&n,&K);
fgetc(stdin),fgets(s+1,501,stdin);
for(int i=1;i<=n;++i)f2[i][i-1]=1;
for(int l=2;l<=n;++l)
for(int i=1,j=l;j<=n;++i,++j)
if(s[j]==')'||s[j]=='?'){
if(s[i]=='('||s[i]=='?'){
f1[i][j]=f2[i+1][j-1];
for(int k=i+1;k<=i+K+1&&k<j-1;++k){if(s[k]!='*'&&s[k]!='?')break;f1[i][j]=sum(f1[i][j],f2[k+1][j-1]);}
for(int k=j-1;k>=j-K-1&&k>i+1;--k){if(s[k]!='*'&&s[k]!='?')break;f1[i][j]=sum(f1[i][j],f2[i+1][k-1]);}
if(2<l&&l<=K+2){
int flag=1;
for(int k=i+1;k<j;++k)if(s[k]!='*'&&s[k]!='?'){flag=0;break;}
f1[i][j]+=flag;
}
f4[i][j]=f1[i][j];
for(int k=i;k<j;++k)f4[i][j]=sum(f4[i][j],pro(f1[i][k],f4[k+1][j]));
f2[i][j]=f4[i][j];
for(int k=i;k<j;++k)f2[i][j]=sum(f2[i][j],pro(f4[i][k],f3[k+1][j]));
}
for(int k=0;k<K&&k<l-1;++k){if(s[i+k]!='*'&&s[i+k]!='?')break;f3[i][j]=sum(f3[i][j],f2[i+k+1][j]);}
}
printf("%d",f2[1][n]);
return 0;
}