#include <algorithm>
#include <cfloat>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iostream>
#include <map>
#include <memory>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
 
using namespace std;
 
#define sz size()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) (c).begin(), (c).end()
#define rep(i,a,b) for(int i=(a);i<(b);++i)
#define clr(a, b) memset((a), (b) ,sizeof(a))
 
#define MOD 1000000007

vector<string> split(string s, char c){
  vector<string> ret;
  string s1;
  for(int i = 0; i <= s.size(); i++){
    if(i == s.size()){
      ret.push_back(s1);
      return ret;
    }
    if(s[i] == c){
      ret.push_back(s1);
      s1 = "";
    }
    else{
      s1 += s[i];
    }
  }
}

long long ston(string s){
  long long n;
  sscanf(s.c_str(), "%lld", &n);
  return n;
}

int main(){
	string s;
	cin >> s;
	string s1;
	rep(i,0,s.sz){
		if(s[i]=='+' || s[i] =='*'){
			s1+=s[i];
		}
	}
	rep(i,0,s.sz){
		if(s[i] == '+' || s[i] == '*'){
			s[i] = ' ';
		}
	}
	vector<string> vs;
	vs = split(s, ' ');
	vector<int> v;
	rep(i,0,vs.sz){
		v.pb(ston(vs[i]));
	}
	int ans = v[0];
	rep(i,0,s1.sz){
		if(s1[i]=='+'){
			ans *= v[i+1];
		}
		else{
			ans += v[i+1];
		}
	}
	cout << ans << endl;
  return 0;
}