#include <stdio.h>
#include <stdlib.h>
int top=0,S[101];//topは要素を入れないで空白を入れておく,S[]はスタックで数字格納S[0]は何も入っていない
int isEmpty(void);//topが0かどうか確かめスタックが空かどうか確かめる
int isFull(void);//スタックが満杯かどうかを確かめる
void push(int);//スタックの先頭に要素xを追加する
int pop(void);//スタックのトップから要素を取り出す関数
int main(){//last in first out
  int x,i,a[2],score=0;
  char s[100];//式に

  while( scanf("%s", s) != EOF ){
	if ( s[0] == '+' ){
	  a[0]=pop();
	  a[1]=pop();
	  score=a[1]+a[0];
	  push(score);
	}else if ( s[0] == '-' ){
	  a[0]=pop();
	  a[1]=pop();
	  score=a[1]-a[0];
	  push(score);
	} else if ( s[0] == '*' ){
	  a[0]=pop();
	  a[1]=pop();
	  score=a[0]*a[1];
	  push(score);
	} else {
	  x = atoi(s);
	  push(x);
	}
  }
  printf("%d",S[1]);
  printf("\n");
  return 0;
}
int isEmpty(void){//topが0かどうか確かめスタックが空かどうか確かめる
  if(top==0)
	return 1;//空
  else return 0;
}

int isFull(void){//スタックが満杯かどうかを確かめる
  int MAX=101;
  if( top >=MAX-1)//満杯
	return 1;
  else return 0;//満杯じゃない
}

void push(int x){//スタックの先頭に要素xを追加する
  if (isFull()==0){
	top++;
	S[top] = x;
  }else printf("overflow!");
}
int pop(void){
  if (isEmpty()==1){
	printf("empty!");
	return 0;
  }
  top--;//頂点の要素を削除
  return S[top+1];
}

