// {{{ #include #include #include #include #include #include #include #include #include #define SIZE(x) ((int) (x).size()) #define REP(i, n) for (int i = 0; i < (int) (n); ++i) #define FOR(i, a, b) for (int i = (int) (a); i <= (int) (b); ++i) #define FORD(i, a, b) for (int i = (int) (a); i >= (int) (b); --i) #define FORE(i, c) for (__typeof((c).begin()) i = (c).begin(); i != (c).end(); ++i) #define DEBUG(x) { cerr << #x << ": " << (x) << endl; } using namespace std; typedef long long LL; // }}} #define MAXN 107 LL LB[MAXN][MAXN], UB[MAXN][MAXN]; int main() { for (;;) { string E; cin >> E; if (E == "END") break; vector A; vector B; int x = 0; FORE(i, E) if (*i == '+' || *i == '*') { A.push_back(x); x = 0; B.push_back(*i); } else { x *= 10; x += *i - '0'; } A.push_back(x); int n = SIZE(A); FOR(d, 1, n) REP(i, n + 1 - d) { if (d == 1) { LB[d][i] = UB[d][i] = A[i]; } else { LB[d][i] = UB[d][i] = -1; FOR(e, 1, d - 1) { LL lr = (B[i + e - 1] == '+') ? (LB[e][i] + LB[d - e][i + e]) : (LB[e][i] * LB[d - e][i + e]); LL ur = (B[i + e - 1] == '+') ? (UB[e][i] + UB[d - e][i + e]) : (UB[e][i] * UB[d - e][i + e]); if (LB[d][i] == -1 || lr < LB[d][i]) LB[d][i] = lr; if (UB[d][i] == -1 || ur > UB[d][i]) UB[d][i] = ur; } } } cout << LB[n][0] << ' ' << UB[n][0] << endl; } }