#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000

int num[MAX];
int top;

int isEmpty(); /*スタックが空なら1を、そうでないなら0を返す関数*/
int isFull();/*スタックが要素で満されているなら1を、そうでないなら0を返す関数*/
void push(int);/*要素を挿入する関数*/
int pop();/*要素を取り出す関数*/

int main(){
    int n;
    char s[100];
    int a,b;

    top=0;

    while(scanf(" %s",s) != EOF){
        if(s[0] == '+'){
            
            a = pop();
            b = pop();
            push(a+b);

        }else if(s[0] == '-'){
            
            a = pop();
            b = pop();
            push(b-a);


        }else if(s[0] == '*'){
            
            a = pop();
            b = pop();
            push(a*b);

        }else{
            n = atoi(s);
            push(n);
        }

    }

    printf("%d\n",pop());

    return 0;
}

int isEmpty(){
    if(top == 0) return 1;
    return 0; 
}

int isFull(){
    if(top >= MAX-1) return 1;
    return 0;
}

void push(int n){
    if(isFull()){
        printf("Error,stack is full\n");
        exit(2);
    }
    num[++top] = n;
}

int pop(){
    if(isEmpty()){
        printf("Error,stack is empty\n");
        exit(3);
    }
    top--;
    return num[top+1];
}

