import java.io.IOException;
import java.util.EmptyStackException;
import java.util.Scanner;
public class Main {

	private static Object stack[];
	private static int sp;

	public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner(System.in);

		String[] item = sc.nextLine().split(" ");
		int x = item.length;

		sp = 0;
		stack = new Object[x]; // スタックの生成

		for(int i=0;i<x;i++) {
			if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			}
		}

		System.out.println(stack[0]);
		sc.close();
	}

	/*
	 * スタックから取り出す
	 */
	public static Object pop() {
		if(sp<0) {
			throw new EmptyStackException();
		}
		Object value = stack[--sp];
		stack[sp] = null;
		return value;
	}

	/*
	 * スタックに追加する
	 */
	public static void push(Object x) {
		if(sp>=200) {
			throw new IllegalStateException("StackOverFlow");
		}
		stack[sp++] = x;
	}
} import java.io.IOException; IOException java.io import java.util.EmptyStackException; EmptyStackException java.util import java.util.Scanner; Scanner java.util public class Main {

	private static Object stack[];
	private static int sp;

	public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner(System.in);

		String[] item = sc.nextLine().split(" ");
		int x = item.length;

		sp = 0;
		stack = new Object[x]; // スタックの生成

		for(int i=0;i<x;i++) {
			if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			}
		}

		System.out.println(stack[0]);
		sc.close();
	}

	/*
	 * スタックから取り出す
	 */
	public static Object pop() {
		if(sp<0) {
			throw new EmptyStackException();
		}
		Object value = stack[--sp];
		stack[sp] = null;
		return value;
	}

	/*
	 * スタックに追加する
	 */
	public static void push(Object x) {
		if(sp>=200) {
			throw new IllegalStateException("StackOverFlow");
		}
		stack[sp++] = x;
	}
} Main private static Object stack[]; stack private static int sp; sp public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner(System.in);

		String[] item = sc.nextLine().split(" ");
		int x = item.length;

		sp = 0;
		stack = new Object[x]; // スタックの生成

		for(int i=0;i<x;i++) {
			if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			}
		}

		System.out.println(stack[0]);
		sc.close();
	} main {
		Scanner sc = new Scanner(System.in);

		String[] item = sc.nextLine().split(" ");
		int x = item.length;

		sp = 0;
		stack = new Object[x]; // スタックの生成

		for(int i=0;i<x;i++) {
			if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			}
		}

		System.out.println(stack[0]);
		sc.close();
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String[] item = sc.nextLine().split(" "); item sc.nextLine().split(" ") sc.nextLine().split sc.nextLine() sc.nextLine sc " " int x = item.length; x item.length item item.length sp = 0 sp 0 stack = new Object[x] stack new Object[x] x for(int i=0;i<x;i++) {
			if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			}
		} int i=0; int i=0; i 0 i<x i x i++ i++ i {
			if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			}
		} {
			if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			}
		} if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			} item[i].equals("+") item[i].equals item[i] item i "+" {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			} int b = new Integer(pop().toString()).intValue(); b new Integer(pop().toString()).intValue() new Integer(pop().toString()).intValue new Integer(pop().toString()) int a = new Integer(pop().toString()).intValue(); a new Integer(pop().toString()).intValue() new Integer(pop().toString()).intValue new Integer(pop().toString()) push(a+b) push a+b a b if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			} item[i].equals("-") item[i].equals item[i] item i "-" {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			} int b = new Integer(pop().toString()).intValue(); b new Integer(pop().toString()).intValue() new Integer(pop().toString()).intValue new Integer(pop().toString()) int a = new Integer(pop().toString()).intValue(); a new Integer(pop().toString()).intValue() new Integer(pop().toString()).intValue new Integer(pop().toString()) push(a-b) push a-b a b if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			} item[i].equals("*") item[i].equals item[i] item i "*" {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			} int b = new Integer(pop().toString()).intValue(); b new Integer(pop().toString()).intValue() new Integer(pop().toString()).intValue new Integer(pop().toString()) int a = new Integer(pop().toString()).intValue(); a new Integer(pop().toString()).intValue() new Integer(pop().toString()).intValue new Integer(pop().toString()) push(a*b) push a*b a b {
				push(item[i]);
			} push(item[i]) push item[i] item i System.out.println(stack[0]) System.out.println System.out System System.out stack[0] stack 0 sc.close() sc.close sc String[] args args /*
	 * スタックから取り出す
	 */
	public static Object pop() {
		if(sp<0) {
			throw new EmptyStackException();
		}
		Object value = stack[--sp];
		stack[sp] = null;
		return value;
	} pop {
		if(sp<0) {
			throw new EmptyStackException();
		}
		Object value = stack[--sp];
		stack[sp] = null;
		return value;
	} if(sp<0) {
			throw new EmptyStackException();
		} sp<0 sp 0 {
			throw new EmptyStackException();
		} throw new EmptyStackException(); new EmptyStackException() Object value = stack[--sp]; value stack[--sp] stack --sp sp stack[sp] = null stack[sp] stack sp null return value; value /*
	 * スタックに追加する
	 */
	public static void push(Object x) {
		if(sp>=200) {
			throw new IllegalStateException("StackOverFlow");
		}
		stack[sp++] = x;
	} push {
		if(sp>=200) {
			throw new IllegalStateException("StackOverFlow");
		}
		stack[sp++] = x;
	} if(sp>=200) {
			throw new IllegalStateException("StackOverFlow");
		} sp>=200 sp 200 {
			throw new IllegalStateException("StackOverFlow");
		} throw new IllegalStateException("StackOverFlow"); new IllegalStateException("StackOverFlow") stack[sp++] = x stack[sp++] stack sp++ sp x Object x x public class Main {

	private static Object stack[];
	private static int sp;

	public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner(System.in);

		String[] item = sc.nextLine().split(" ");
		int x = item.length;

		sp = 0;
		stack = new Object[x]; // スタックの生成

		for(int i=0;i<x;i++) {
			if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			}
		}

		System.out.println(stack[0]);
		sc.close();
	}

	/*
	 * スタックから取り出す
	 */
	public static Object pop() {
		if(sp<0) {
			throw new EmptyStackException();
		}
		Object value = stack[--sp];
		stack[sp] = null;
		return value;
	}

	/*
	 * スタックに追加する
	 */
	public static void push(Object x) {
		if(sp>=200) {
			throw new IllegalStateException("StackOverFlow");
		}
		stack[sp++] = x;
	}
} public class Main {

	private static Object stack[];
	private static int sp;

	public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner(System.in);

		String[] item = sc.nextLine().split(" ");
		int x = item.length;

		sp = 0;
		stack = new Object[x]; // スタックの生成

		for(int i=0;i<x;i++) {
			if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			}
		}

		System.out.println(stack[0]);
		sc.close();
	}

	/*
	 * スタックから取り出す
	 */
	public static Object pop() {
		if(sp<0) {
			throw new EmptyStackException();
		}
		Object value = stack[--sp];
		stack[sp] = null;
		return value;
	}

	/*
	 * スタックに追加する
	 */
	public static void push(Object x) {
		if(sp>=200) {
			throw new IllegalStateException("StackOverFlow");
		}
		stack[sp++] = x;
	}
} Main
import java.io.IOException;
import java.util.EmptyStackException;
import java.util.Scanner;
public class Main {

	private static Object stack[];
	private static int sp;

	public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner(System.in);

		String[] item = sc.nextLine().split(" ");
		int x = item.length;

		sp = 0;
		stack = new Object[x]; // スタックの生成

		for(int i=0;i<x;i++) {
			if(item[i].equals("+")) {
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a+b);
			}else if(item[i].equals("-")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a-b);
			}else if(item[i].equals("*")){
				int b = new Integer(pop().toString()).intValue();
				int a = new Integer(pop().toString()).intValue();
				push(a*b);
			}else {
				push(item[i]);
			}
		}

		System.out.println(stack[0]);
		sc.close();
	}

	/*
	 * スタックから取り出す
	 */
	public static Object pop() {
		if(sp<0) {
			throw new EmptyStackException();
		}
		Object value = stack[--sp];
		stack[sp] = null;
		return value;
	}

	/*
	 * スタックに追加する
	 */
	public static void push(Object x) {
		if(sp>=200) {
			throw new IllegalStateException("StackOverFlow");
		}
		stack[sp++] = x;
	}
}
