#include<stdio.h>
#define SIZE 1000
#define MAX 1000
int stack[SIZE];
int stack_size = 0;

int pop()
{
  if(stack_size<=0)return 0;
  else return stack[--stack_size];
}
int push(int k)
{
 return  stack[stack_size++]=k;
}
int hantei(char *s)
{
  if(*s=='+' || *s=='-'){
    s++;
    if(*s>='0' && *s<='9')return 1;
    return 0;
  }
  if(*s>='0' && *s<='9')return 1;
  return 0;
}

int get(char *s)
{
  int flag=0,n=0;
  if(*s=='+'){
    s++;
  }
  else if(*s=='-'){
    flag=1;
    s++;
  }
  while(*s>='0' && *s<='9'){
    n=n*10+(*s-'0');
    s++;
  }
  if(flag)return -n;
  return n;
}
int calc(char *s)
{
  int a,b,n;
  while(*s){
    if(hantei(s)){
      n=get(s);
      push(n);
      while(*s=='-' || *s=='+'){
	s++;
      }
      while(n){
	n/=10;
	s++;
      }
    }
    else {
      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;
	case '/':
	a=pop();
	b=pop();
	push(b/a);
	break;
      }
      s++;
    }
  }
  return pop();
}

int main(){
  char s[MAX];
  scanf("%[^\n]*s",s);
  printf("%d\n",calc(s));
}

