#include <stdio.h>
#include <stdlib.h>
#define STACK 100
#define MAX 500

int stack[STACK];
int top = 0;

int pop(void);
void push(int);
void suuji(char*);
void calcu(char);


int main(){
    int i;
	char s[MAX];
fgets(s,MAX,stdin);
    suuji(s);
	printf("%d\n",stack[0]);

}
//データ取り出し
int pop(void)
{
    top--;
	return stack[top];
}
//テータ挿入
void push(int num)
{
	stack[top] = num;
	top++;
}
//数字判定
void suuji(char *s)
{
    int i,k=0;
    for(i=0;;i++){
		if(s[i+1]=='\0') break;
		else {
         if(s[i]=='+' || s[i]=='-' || s[i]=='*' || s[i]==' '){
			  calcu(s[i]);  
		 }
		 else if(s[i]>='0' && s[i]<='9') {
				k=k+(s[i]-48);
				k=k*10;
				if(s[i+1]==' ') {
					push(k/10);
					k=0;
				}
		    }  

	    }   
	}
}
//逆ポーランド計算
void calcu(char s)
{	
	int a,b;
			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;
			default :
			break;
			}
}

