#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>

#define MAX 500
#define SMAX 1000000
int stack[MAX];
int top=0;

void define_code(void);//0~9,+,-,*,/に対応する文字コードを特定する。
void initialize(void);//topを0にしてスタックを初期化する
int isEmpty(void);//スタックが空なら１を返す
int isFull(void);//スタックが満杯なら１を返す
void push(int push_num);//値をpushする
int pop(void);
void cal(char str);//計算を行う
void stack_input(void);//スタックに値を入れる
//
int main(void)
{
    initialize();
    stack_input();
    printf("%d\n",stack[1]);
    return 0;
}
//
void initialize(void)
{
    top=0;
}
int isEmpty(void)
{
    if(top==0){return 1;}
    else{return 0;}
}
int isFull(void)
{
    if(top>=MAX-1){return 1;}
    else{return 0;} 
}
void push(int push_num)
{
    if (isFull())
    {
        //printf("over-flow\n");
        exit(1);
    }
    else
    {
        top++;
        stack[top] = push_num;
        //printf("push:%d\n",push_num);
    }
}
int pop(void)
{
    if(isEmpty())
    {
        //printf("under-flow\n");
        exit(1);
    }
    else
    {
        top--;
        //printf("pop:%d\n",stack[top+1]);
        return stack[top+1];
    }
}
void cal(char str)
{
    int x,y;
    x=pop();
    y=pop();
    if(str=='+'){y=y+x;}
    else if(str=='-'){y=y-x;}
    else if(str='*'){y=y*x;}
    push(y);
    
}
void stack_input(void)
{
    char str[SMAX];
    int x;
    gets(str);
    int i=0;
    while(str[i]>=' ')
    {
        while(isspace(str[i])){i++;}
        if(isdigit(str[i]))
        {
            x=0;
            while(isdigit(str[i]))
            {
                x=10*x+(str[i]-'0');
                i++;
            }
            push(x);
        }
        else
        {
            cal(str[i]);
            i++;
        }
    }
}

