#include <stdio.h>
#define STACK_SIZE 100
#define MAX_LEN 100

int stack[STACK_SIZE];
int stack_size = 0;

int pop()
{
    if (stack_size <= 0) return 0;
    return stack[--stack_size];
}


int push(int a)
{
    stack[stack_size++] = a;
    return 0;
}

int is_digit(char *s)
{
   
    if (*s == '+' || *s =='-') {
        s++;
        if (*s >= '0' && *s <= '9') return 1;
        return 0;
    }
  
    if (*s >= '0' && *s <= '9') return 1;
    return 0;
}


int get_number(char *s)
{
    int sign = 0, n = 0;
    
    
    if (*s == '+') {
        s++;
    } else if (*s == '-') {
        sign = 1;
        s++;
    }
    while (*s >= '0' && *s <= '9') {
        n = n * 10 + (*s - '0');
        s++;
    }
    
    if (sign) return -n;
    return n;
}


int calc_rpn(char *s)
{
    int a, b, n;
    
    
    while (*s) {
        
        
        if (is_digit(s)) {
            n = get_number(s);
            push(n);
            while (*s == '-' || *s == '+') {
                s++;
            }
            while (n) {
                n /= 10;
                s++;
            }
            
            
        } else {
            switch (*s) {
                case '+':
                    a = pop();
                    b = pop();
                    push(b+a);
                    break;
                case '-':
                    a = pop();
                    b = pop();
                    push(b-a);
                    break;
                case '*':
                    a = pop();
                    b = pop();
                    push(b*a);
                    break;
            }
            s++;
        }
    }
    return pop();
}

int main()
{
    char s[MAX_LEN];
    scanf("%[^\n]*s", s);
    printf("%d\n",calc_rpn(s));
}

