#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[505][505],as[505][505],sa[505][505],s[505][505],aa[505][505];
const int md=1e9+7;
char ss[505];
int kk[505];
signed main()
{
char c;
int n,k1;
cin>>n>>k1;
for(int i=1;i<=n;++i)
{
c=getchar();
if(c!='('&&c!=')'&&c!='*'&&c!='?'){i--;continue;}
ss[i]=c;
if(c!='('&&c!=')')kk[i]=kk[i-1]+1;
}
for(int i=n;i>=1;i--)
{
for(int j=min(k1,kk[i]);j>0;j--)
{
s[i-j+1][i]=1;
}
}
for(int i=2;i<=n;++i)
{
for(int j=1;j<=n-i+1;j++)
{
int u=i+j-1;
bool k=(ss[j]=='('||ss[j]=='?')&&(ss[u]==')'||ss[u]=='?');
if(i==2)
{
a[j][u]=k;continue;//()
}
if(k)
{
a[j][u]+=s[j+1][u-1];//(s)
a[j][u]+=a[j+1][u-1]+aa[j+1][u-1];//(a)
a[j][u]+=as[j+1][u-1];//(as)
a[j][u]+=sa[j+1][u-1];//(sa)
for(int v=j+1;v<u-1;++v)
{
a[j][u]+=aa[j+1][v]*s[v+1][u-1]+s[j+1][v]*aa[v+1][u-1];
a[j][u]%=md;
}
}
for(int v=j;v<u;++v)
{
as[j][u]+=a[j][v]*s[v+1][u];
as[j][u]%=md;
sa[j][u]+=s[j][v]*a[v+1][u];
sa[j][u]%=md;
aa[j][u]+=a[j][v]*a[v+1][u];//ab
aa[j][u]+=aa[j][v]*a[v+1][u];//ab
aa[j][u]+=aa[j][v]*sa[v+1][u];//asb
aa[j][u]+=a[j][v]*sa[v+1][u];//asb
aa[j][u]%=md;
}
}
}
printf("%lld\n",a[1][n]+aa[1][n]);
return 0;
}
//aa´úÖ¸µÄÊÇ"asa"Óë"ab"