#include #include int main() { std::string line; while( true ) { std::cin >> line; if( line[0] == 'E' ) { break; } line += '*'; int n; int min, max, minAg, maxAg, Min, last, lastMax; bool zero = false; bool skipNext = false; char lastOp = '+'; n = 0; min = 0; Min = -1; max = 0; minAg = 0; maxAg = 0; last = 0; lastMax = 1; for( int i = 0; i < line.size(); i++ ) { if( line[i] == '+' || line[i] == '*' ) { if( lastOp == '+' ) { min += minAg; minAg = n; if( !skipNext ) { maxAg += n; } else { maxAg = 0; } } else if ( lastOp == '*' ) { if( max == 0 ) { lastMax = 1; max = maxAg; } else { lastMax = max; max *= maxAg; } if( !skipNext ) { maxAg = n; } else { maxAg = 0; } minAg *= n; } if( n == 0 && lastOp == '*' && line[i] == '*' ) { Min = 0; } else if( n == 0 && lastOp == '*' ) { min = 0; } else if( n == 0 && line[i] == '*' ) { Min = min; } if( n == 0 ) { if( lastOp == '*' ) { max -= last*lastMax; maxAg = 1; } if( line[i] == '*' && maxAg == 0 ) { skipNext = true; } } skipNext = skipNext && n == 0; last = n; n = 0; lastOp = line[i]; } else { n = n*10 + ( line[i] - '0' ); } } if( max == 0 ) { max = maxAg; } else { max *= maxAg; } min += minAg; if( Min == -1 ) { printf( "%d %d\n", min, max ); } else { printf( "%d %d\n", Min, max ); } } return 0; }