#include<iostream>
using namespace std;
char fh[100010];
int tops,topf,sz[33340][2];
void pop(){
int a0,a1;
if(fh[topf]=='+'){
a0=sz[tops-1][0]*sz[tops][0]%10007;
a1=(sz[tops-1][0]*sz[tops][1]+sz[tops-1][1]*sz[tops][1])%10007;
}
else if(fh[topf]=='*'){
a1=sz[tops-1][1]*sz[tops][1]%10007;
a0=(sz[tops-1][0]*sz[tops][1]+sz[tops-1][1]*sz[tops][0]+sz[tops-1][0]*sz[tops][0])%10007;
}
tops--,topf--;
sz[tops][0]=a0;
sz[tops][1]=a1;
}
int main(){
int L;
cin>>L;
char pre='(';
while(L--){
char c=getchar();
if(c!='('&&pre=='('){
tops++;
sz[tops][0]=sz[tops][1]=1;
}
if(c=='('){
if(pre=='+'||pre=='*')tops--;
fh[++topf]=c;
}
else if(c==')'){
while(fh[topf]!='(')pop();
topf--;
}
else if(c=='+'){
while(fh[topf]=='+'||fh[topf]=='*')pop();
fh[++topf]='+';
tops++;
sz[tops][0]=sz[tops][1]=1;
}
else if(c=='*'){
while(fh[topf]=='*')pop();
fh[++topf]='*';
tops++;
sz[tops][0]=sz[tops][1]=1;
}
pre=c;
}
while(tops>1)pop();
cout<<sz[1][0]<<endl;
}