/* Stack (逆ポーランンド記法) */
/* 逆ポーランド記法で与えられた数式の計算結果を出力してください。 */
/* 入力: １つの数式が１行に与えられます。連続するシンボル（オペランドあるいは演算子）は１つの空白で区切られて与えられます。 */
/* 出力: 計算結果を１行に出力してください。 */


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

int top=0, abc[1000];

void push(int);
int pop();

int main()
{
  int x, y;
  
  top = 0;
  
  char aaa[100];
  
  while(scanf("%s", aaa) != EOF) {
    if (aaa[0] == '+') {
      x = pop();
      y = pop();
      push(x + y);
    }

    else if (aaa[0] == '-') {
      y = pop();
      x = pop();
      push(x - y);
    }

    else if (aaa[0] == '*') {
      x = pop();
      y = pop();
      push(x * y);
    }

    else push(atoi(aaa));
  }

  printf("%d\n", pop());
  
  return 0;
}

void push(int x)
{
  abc[++top] = x;
}

int pop()
{
  top--;
  return abc[top + 1];
}


