P1310
#include <cstdio>
const int N = 100005, M = 10007;
using namespace std;
char s[N];
int l, k, t, n_0[N], n_1[N], ans[2 * N], str[N];
int main() {
scanf ("%d", &l);
scanf ("%s", s);
ans[++k] = '.';
for (int i = 0; s[i]; i++) {
if (s[i] == '(' || s[i] == '*')
str[++t] = s[i];
if (s[i] == '+') {
while (str[t] == '*')
ans[++k] = str[t--];
str[++t] = s[i];
}
if (s[i] == ')') {
while (str[t] != '(')
ans[++k] = str[t--];
t--;
}
if (s[i] != '(' && s[i] != ')')
ans[++k] = '.';
}
while (t > 0)
ans[++k] = str[t--];
for (int i = 1; i <= k; i++) {
if (ans[i] == '.') {
n_0[++t] = 1;
n_1[t] = 1;
}
if (ans[i] == '*') {
t--;
n_0[t] = (n_0[t] * n_0[t + 1] + n_0[t] * n_1[t + 1] + n_1[t] * n_0[t + 1]) % M;
n_1[t] = n_1[t] * n_1[t + 1] % M;
}
if (ans[i] == '+') {
t--;
n_0[t] = n_0[t] * n_0[t + 1] % M;
n_1[t] = (n_0[t] * n_1[t + 1] + n_1[t] * n_0[t + 1] + n_1[t] * n_1[t + 1]) % M;
}
}
printf ("%d", n_0[1]);
return 0;
}