#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 200

int stack[MAX_N+1];
int top;

void init(void) {
  top = 0;
}

int isEmpty(void) {
  return top == 0;
}

int isFull(void) {
  return top >= MAX_N;
}

void push(int x) {
  if (isFull()) {               /* オーバーフロー */
    return;                     /* スタックが満杯の時は何もしない */
  }
  top++;
  stack[top] = x;
}

int pop(void) {
  if (isEmpty()) {              /* アンダーフロー */
    return -1;                  /* スタックが空の場合は-1を返す */
  }
  top--;
  return stack[top+1];
}

int main(void) {
  int x;
  char s[100];

  while(scanf("%s", s) != EOF) {
    int a, b;
    if (s[0] == '+') {
      a = pop();
      b = pop();
      if (b >= 0) {
        push(b+a);
      }
    } else if (s[0] == '-') {
      a = pop();
      b = pop();
      if (b >= 0) {
        push(b-a);
      }
    } else if (s[0] == '*') {
      a = pop();
      b = pop();
      if (b >= 0) {
        push(b*a);
      }
    } else {
      x = atoi(s);
      push(x);
    }
  }

  printf("%d\n", stack[1]);
  return 0;
}