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

#define STACK_MAX 100

    /* ※この例では，double型のデータを格納するスタックを作成 */
    int stack[STACK_MAX];
    /* スタック頂上の位置（最下部からのオフセット） */
    int stack_top=0;

    /* スタックへpush */
    void stack_push(int val)
   {

           /* 渡された値をスタックに積む */
     ++stack_top;
     stack[stack_top]=val;
   }

   /* スタックからデータをpop */
   int stack_pop(void)
   {

           /* いちばん上の値を返す */
           --stack_top;
           return stack[stack_top+1];

   }


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

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


      stack_push(a+b);

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


      stack_push(b-a);
    }
    else if ( s[0] == '*' ){
     a =stack_pop();
     b=stack_pop();
     

     stack_push(a*b);
    }
    else {
      x = atoi(s);

      stack_push(x);
    }
  }
  printf("%d\n", stack[1]);

  return 0;
}