#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cctype>
#include<math.h>
#include<string>
#include<string.h>
#include<stack>
#include<queue>
#include<vector>
#include<utility>
#include<set>
#include<map>
#include<stdlib.h>
#include<iomanip>

using namespace std;

#define ll long long
#define ld long double
#define EPS 0.0000000001
#define INF 1e9
#define LINF (ll)INF*INF
#define MOD 1000000007
#define rep(i,n) for(int i=0;i<(n);i++)
#define loop(i,a,n) for(int i=a;i<(n);i++)
#define all(in) in.begin(),in.end()
#define shosu(x) fixed<<setprecision(x)

#define int ll //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

typedef vector<int> vi;
typedef vector<string> vs;
typedef pair<int,int> pii;
typedef vector<pii> vp;

int gcd(int a, int b){
    if(b==0) return a;
    return gcd(b,a%b);
}
int lcm(int a, int b){
    return a/gcd(a,b)*b;
}
//0:+, 1:-, 2:*

string s;
int ind;
vs in;

int number(){
  int ret = 0;
  while(isdigit(s[ind])){
    ret *= 10;
    ret += s[ind] - '0';
    ind++;
  }
  return ret;
}

int f(int a, int b, char c){
    if(c == '+')return a+b;
    if(c == '-')return a-b;
    if(c == '*')return a*b;
}


int expression(int id){

    if(id == in.size()){
        if(s[ind] == '('){
            ind++;
            int ret = expression(0);
            ind++;
            return ret;
        }else{
            return number();
        }
    }

    int ret = expression(id+1);
    while(ind < s.size()){
        bool c = true;
        rep(i,in[id].size()){
            char op = s[ind];
            if(op == in[id][i]){
                ind++;
                ret = f(ret,expression(id+1),op);
                c = false;
                break;
            }
        }
        if(c)break;
    }
    return ret;
}


signed main(void) {
    vector<vs> vvs;
    rep(i,3)rep(j,3)rep(k,3){
        vs t(3);
        t[i] += '+';
        t[j] += '-';
        t[k] += '*';
        int id = 0;
        while(id < t.size()){
            if(t[id].empty())t.erase(t.begin()+id);
            else id++;
        }
        vvs.push_back(t);
    }
    cin >> s;
    int ans = -(1LL<<63);
    rep(i,vvs.size()){
        ind = 0;
        in = vvs[i];
        int ret = expression(0);
        ans = max(ans, ret);
    }
    cout << ans << endl;
}

