#include #include #include using namespace std; long int N; char getNext() { if (--N < 0) return '_'; char res; cin >> res; return res; } long int compute2(long int depth) { char c = getNext(); if (c == ')') return depth * compute2(depth); else if (c == '(') return compute2(depth+1); return -1; } long int compute(char current) { long int sum = 0; long int opened = 0; if (current == '(') opened++; for (char next = getNext(); next != '_'; next = getNext()) { if (next == '(') opened++; else if (next == ')') opened--; if (current == '(' && next == ')') sum++; else if (current == ')' && next == ')') sum++; else if (current == ')' && next == '(') { sum = sum * compute(next); } if (opened == 0 && next == ')' && cin.peek() != '(') return sum; current = next; } return sum; } int main() { cin >> N; cout << compute(getNext()) << endl; return 0; long int sum = 1; for (char next = getNext(); next != '_'; next = getNext()) { if (next == '(') { sum = sum * compute2(0); } } cout << sum << endl; return 0; } //long int main() { // long int nmbOfChars; // cin >> nmbOfChars; // // long int sum = 0; // char lastChar = '_'; // for (; nmbOfChars > 0; --nmbOfChars) { // char currentChar; // cin >> currentChar; // // if (lastChar == '(' && currentChar == ')') { // sum++; // } // if (lastChar == ')' && currentChar == ')') { // sum++; // } // lastChar = currentChar; // } // cout << sum << endl; // // return 0; //}