import scala.io.StdIn.readLine
case class Stack[T](private val stack: List[T]) {
    def isEmpty(): Boolean = if (stack == Nil) true else false
    def top(n: Int): T = {
        def go(n: Int, s: List[T]): T = s match {
            case x :: xs if n == 0=> x
            case x :: xs => go(n - 1, xs)
            case Nil => throw new RuntimeException("No such element.")
        }
        go(n, stack)
    }
    def pop(): Stack[T] = stack match {
        case x :: xs => new Stack[T](xs)
        case Nil => throw new RuntimeException("No such element.")
    }
    def push(x: T): Stack[T] = new Stack[T](x :: stack)
}
object Stack {
    def apply[T](): Stack[T] = new Stack[T](Nil: List[T])
}
object Main {
    def main(args: Array[String]): Unit = {
        println(calc(readLine).top(0))
    }
    
    def calc(line: String): Stack[Long] = line.split(" ").foldLeft(Stack[Long]()) { (stack, elem) => 
        elem match {
            case "+" => {
                val result = stack.top(1) + stack.top(0)
                stack.pop.pop.push(result)
            }
            case "-" => {
                val result = stack.top(1) - stack.top(0)
                stack.pop.pop.push(result)
            }
            case "*" => {
                val result = stack.top(1) * stack.top(0)
                stack.pop.pop.push(result)
            }
            case _ => stack.push(elem.toLong)
        }
    }
}
