Vanya is doing his maths homework. He has an expression of form <image>, where x1, x2, ..., xn are digits from 1 to 9, and sign <image> represents either a plus '+' or the multiplication sign '*'. Vanya needs to add one pair of brackets in this expression so that to maximize the value of the resulting expression.

Input

The first line contains expression s (1 ≤ |s| ≤ 5001, |s| is odd), its odd positions only contain digits from 1 to 9, and even positions only contain signs  +  and  * . 

The number of signs  *  doesn't exceed 15.

Output

In the first line print the maximum possible value of an expression.

Examples

Input

3+5*7+8*4


Output

303


Input

2+3*5


Output

25


Input

3*4*5


Output

60

Note

Note to the first sample test. 3 + 5 * (7 + 8) * 4 = 303.

Note to the second sample test. (2 + 3) * 5 = 25.

Note to the third sample test. (3 * 4) * 5 = 60 (also many other variants are valid, for instance, (3) * 4 * 5 = 60).
import java.io.*;
import java.util.*;

public class Main {

    private static int[] multiply;

    private static class FastReader {
        private BufferedReader reader;
        private StringTokenizer tokenizer;

        public FastReader(InputStream inputStream) {
            reader = new BufferedReader(new InputStreamReader(inputStream), 1 << 16);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                }
                catch (IOException ex) {
                    throw new RuntimeException(ex);
                }
            }
            return tokenizer.nextToken();
        }

        public String nextLine() {
            try {
                return reader.readLine();
            }
            catch (IOException ex) {
                throw new RuntimeException(ex);
            }
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }
    }

    public static void main(String[] args) {
        FastReader in = new FastReader(System.in);
        PrintWriter out = new PrintWriter(System.out);

        String line = in.nextLine();
        line = "1*"+line+"*1";
        char[] S = (line).toCharArray();
        multiply = new int[17];
        int ptr = 0;
        for (int i = 0; i < S.length; i++) {
            if (S[i] == '*') {
                multiply[ptr] = i;
                ++ptr;
            }
        }
        long answer = 0;
        for (int i = 0; i < ptr; i++) {
            for (int j = i + 1; j < ptr; j++) {
                int left = multiply[i],
                    right = multiply[j];
                long res = evaluate(line.substring(0, left) + "*" +
                                    evaluate(line.substring(left + 1, right)) + "*" +
                                    line.substring(right + 1, line.length()));
                if (res > answer) answer = res;
            }
        }

        out.println(answer);
        out.flush();
    }

    private static long evaluate(String expr) {
        long res = 0;
        long buffer = 1;
        long number = 0;
        expr += "+";
        for (int i = 0; i < expr.length(); i++) {
            if (expr.charAt(i) == '+') {
                buffer *= number;
                res += buffer;
                number = 0;
                buffer = 1;
            }
            else if (expr.charAt(i) == '*') {
                buffer *= number;
                number = 0;
            }
            else {
                number = 10l * number + expr.charAt(i) - '0';
            }
        }
        return res;
    }
}
