#include <stdio.h>
#define STACK_SIZE 199
#define MAX_LEN 398

int stack[STACK_SIZE];
int stack_size = 0;

int pop(void);
void push(int a);
int jud_digit(char *s);
int get_number(char *s);
int calc(char *s);

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

int pop()
{
  if (stack_size <= 0) return 0;
  return stack[--stack_size];
}

void push(int a)
{
  stack[stack_size++] = a;
}

int jud_digit(char *s)
{
  if (*s >= '0' && *s <= '9') return 1;
  return 0;
}

int get_number(char *s)
{
  int n = 0;
  while (*s >= '0' && *s <= '9') {
    n = n * 10 + (*s - '0');
    s++;
  }
  return n;
}

int calc(char *s)
{
  int a, b, n;
	
  // 終端まで繰り返す
  while (*s) {
		
    // 数値なら取り出してスタックに積む
    if (jud_digit(s)) {
      n = get_number(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;
      }
      s++;
    }
  }
  return pop();
}

