#include <bits/stdc++.h>
using namespace std;
long long i, j, k, n, m, x, y, T, ans, big, cas, num, len;
bool flag;
stack<char> tt;
stack<long long> an;
char ss[5005];
char s[5005];
long long calc(long long l, long long r) {
  long long i, j;
  while (!tt.empty()) tt.pop();
  long long nn = 0;
  for (i = 0; i < len; i++) {
    if (i == r) {
      char c = tt.top();
      while (c != '(') {
        ss[nn++] = c;
        tt.pop();
        c = tt.top();
      }
      tt.pop();
    }
    if (s[i] == '*')
      tt.push(s[i]);
    else if (s[i] == '+') {
      while (!tt.empty() && tt.top() == '*') {
        ss[nn++] = '*';
        tt.pop();
      }
      tt.push(s[i]);
    } else if (s[i] >= '0' && s[i] <= '9') {
      ss[nn++] = s[i];
    }
    if (i == l) {
      tt.push('(');
    }
  }
  while (!tt.empty()) {
    ss[nn++] = tt.top();
    tt.pop();
  }
  while (!an.empty()) an.pop();
  for (i = 0; i < nn; i++) {
    if (ss[i] == '+') {
      long long u = an.top();
      an.pop();
      long long v = an.top();
      an.pop();
      an.push(u + v);
    } else if (ss[i] == '*') {
      long long u = an.top();
      an.pop();
      long long v = an.top();
      an.pop();
      an.push(u * v);
    } else {
      an.push(ss[i] - '0');
    }
  }
  return an.top();
}
vector<long long> mul;
int main() {
  scanf("%s", s + 2);
  s[0] = '1';
  s[1] = '*';
  len = strlen(s);
  s[len] = '*';
  s[len + 1] = '1';
  s[len + 2] = 0;
  len = strlen(s);
  mul.clear();
  for (i = 0; i < len; i++) {
    if (s[i] == '*') mul.push_back(i);
  }
  ans = 0;
  for (i = 0; i < mul.size(); i++) {
    for (j = i + 1; j < mul.size(); j++) {
      long long tmp = calc(mul[i], mul[j]);
      ans = max(ans, tmp);
    }
  }
  printf("%I64d\n", ans);
  return 0;
}
