#include<iostream>
#include<vector>
#include<string>
#include<map>
#include<stack>
using namespace std;
int priority(char c)
{
if (c == '+' || c == '-')
{
return 1;
}
else if(c=='*'||c=='/')
{
return 2;
}
else
{
return 0;
}
}
bool isdigit(char c)
{
if (c == '+' || c == '-' || c == '*' || c == '/'||c=='#')
{
return false;
}
else
{
return true;
}
}
double cal(double number1, double number2, char operation)
{
if (operation == '+')
{
return number2 + number1;
}
if (operation == '-')
{
return number2 - number1;
}
if (operation == '*')
{
return number2 * number1;
}
if (operation == '/')
{
return number2 / number1;
}
return 0;
}
double caculate(string input_str)
{
stack<double> number_stack;
stack<char>operation_stack;
input_str = input_str + "#";
string temp = "";
for (int i = 0; i <(int)input_str.size(); i++)
{
char c = input_str[i];
if (isdigit(c))
{
temp = temp + c;
}
else
{
number_stack.push(stod(temp));
temp = "";
while (operation_stack.empty()==false&& priority(operation_stack.top())>=priority(c))
{
double number1 = number_stack.top(); number_stack.pop();
double number2 = number_stack.top(); number_stack.pop();
char operation = operation_stack.top(); operation_stack.pop();
double result = cal(number1, number2, operation);
number_stack.push(result);
}
operation_stack.push(c);
}
}
return number_stack.top();
}
int main()
{
string input_str;
getline(cin, input_str);
double result = caculate(input_str);
printf("%.0f\n",result);
}