type
pair=array[0..1]of longint;
var
l,i,j,kh:longint;
ans,zero:pair;
st:array[1..50000]of longint;
dis:array[1..100000]of longint;
ch:array[1..100000]of char;
function f(l,r:longint):pair;
var i:longint; x,y:pair;
begin
if l>r then exit(zero);
i:=r;
while i>=l do
begin
case ch[i] of
'+':break;
')':i:=dis[i];
end;
dec(i);
end;
if i<l then
begin
i:=r;
while i>=l do
begin
case ch[i] of
'*': break;
')': i:=dis[i];
end;
dec(i);
end;
end;
if i<l then exit(f(l+1,r-1));
x:=f(l,i-1);
y:=f(i+1,r);
if ch[i]='*' then
begin
f[0]:=(x[0]*y[0]+x[0]*y[1]+x[1]*y[0]) mod 10007;
f[1]:=(x[1]*y[1]) mod 10007;
end;
if ch[i]='+' then
begin
f[0]:=x[0]*y[0] mod 10007;
f[1]:=(x[0]*y[1]+x[1]*y[0]+x[1]*y[1]) mod 10007;
end;
end;
begin
assign(input,'exp.in'); reset(input);
assign(output,'exp.out'); rewrite(output);
readln(l);
kh:=0;
for i:=1 to l do read(ch[i]);
for i:=l downto 1 do
case ch[i] of
')': begin inc(kh); st[kh]:=i; end;
'(': begin dis[st[kh]]:=i; dec(kh); end;
end;
zero[0]:=1; zero[1]:=1;
ans:=f(1,l);
writeln(ans[0]);
close(input); close(output);
end.