#include #include #include #include #include #include #include #include #include #include #include #include #include #define p(s) cout<<(s)<=n;i--) #define CK(n,a,b) ((a)<=(n)&&(n)<(b)) #define F first #define S second typedef long long int ll; using namespace std; const ll inf=1e9+7; string s; typedef string::const_iterator State; typedef string::const_iterator State; long long expression(State &); long long term(State &); long long number(State &); long long factor(State &); // 四則演算の式をパースして、その評価結果を返す。 long long expression(State &begin) { long long ret = term(begin); for (;;) { if (*begin == '+') { begin++; ret += term(begin); } else if (*begin == '-') { begin++; ret -= term(begin); } else { break; } } return ret; } // 乗算除算の式をパースして、その評価結果を返す。 long long term(State &begin) { long long ret = factor(begin); for (;;) { if (*begin == '*') { begin++; ret *= factor(begin); } else if (*begin == '/') { begin++; ret /= factor(begin); } else { break; } } return ret; } // 括弧か数をパースして、その評価結果を返す。 long long factor(State &begin) { if (*begin == '(') { begin++; // '('を飛ばす。 long long ret = expression(begin); begin++; // ')'を飛ばす。 return ret; } else { return number(begin); } } // 数字の列をパースして、その数を返す。 long long number(State &begin) { long long ret = 0; while (isdigit(*begin)) { ret *= 10; ret += *begin - '0'; begin++; } return ret; } int main(){ cin>>s; ll ans = -inf; int N = s.size(); REP(i,0,N){ if(!isdigit(s[i])) continue; string a=s.substr(i,N-i); string b=s.substr(0,i); string ab=a+b; if(!isdigit(ab.front())||!isdigit(ab.back())) continue; State begin = ab.begin(); ans = max(ans, expression(begin)); } p(ans); return 0; }