import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.Scanner;

public class Q4 {
	static HashMap<Character, Action> actions = new HashMap<Character, Action>();
	
	public static void main(String[] args) throws Exception {
		BufferedWriter fileout = new BufferedWriter(new FileWriter("OUT4.txt"));
		Scanner scan = new Scanner(new FileReader("DATA4.txt"));
		actions.put('+', new Action() {
			public int run(int a, int b) {
				return a + b;
			}
		});
		actions.put('-', new Action() {
			public int run(int a, int b) {
				return a - b;
			}
		});
		actions.put('*', new Action() {
			public int run(int a, int b) {
				return a * b;
			}
		});
		actions.put('/', new Action() {
			public int run(int a, int b) {
				return a / b;
			}
		});
		actions.put('^', new Action() {
			public int run(int a, int b) {
				return Integer.valueOf(a + "" + b);
			}
		});
		while (scan.hasNextLine()) {
			String line = scan.nextLine();
			line = line.replaceAll(" ", "");
			line = line.replaceAll("\t", "");
			while (line.contains("(") || line.contains(")")) {
				int start = 0;
				int end = 0;
				for (int i = 0; i < line.length(); i++) {
					char ch = line.charAt(i);
					if (ch == '(') {
						start = i;
					} else if (ch == ')') {
						end = i + 1;
						String section = line.substring(start + 1, end - 1);
						section = evalExp(section);
						section = evalMD(section);
						section = evalPM(section);
						//System.out.println(section);
						line = compile(start, end, line, section);
						break;
					}
				}
			}
			line = evalExp(line);
			line = evalMD(line);
			line = evalPM(line);
			fileout.write(line);
			fileout.newLine();
		}
		fileout.close();
	}
	
	public static String evalExp(String line) {
		while (line.contains("^")) {
			int op = line.indexOf("^");
			int astart = op;
			int bend = op + 2;
			for (int i = op - 1; i >= 0; i--) {
				char ch = line.charAt(i);
				if (!Character.isDigit(ch)) {
					astart = i;
					break;
				} else astart = i;
			}
			int a = Math.abs(Integer.valueOf(line.substring(astart, op)));
			for (int i = op + 2; i < line.length(); i++) {
				char ch = line.charAt(i);
				if (!Character.isDigit(ch)) {
					bend = i;
					break;
				} else if (i == line.length() - 1) {
					bend = i + 1;
					break;
				} else bend = i;
			}
			int b = Math.abs(Integer.valueOf(line.substring(op + 1, bend)));
			String result = String.valueOf(actions.get(line.charAt(op)).run(a, b));
			line = compile(astart, bend, line, result);
		}
		return line;
	}
	
	public static String evalMD(String line) {
		int ignore = 0;
		while (line.indexOf("*", ignore) >= 0 || line.indexOf("/", ignore) >= 0) {
			int op1 = line.indexOf("*", ignore);
			if (op1 < 0) op1 = line.length() + 1;
			int op2 = line.indexOf("/", ignore);
			if (op2 < 0) op2 = line.length() + 1;
			int op = Math.min(op1, op2);
			try {
				int astart = op;
				int bend = op + 2;
				for (int i = op - 1; i >= 0; i--) {
					char ch = line.charAt(i);
					if (!Character.isDigit(ch)) {
						if (ch != '-') {
							astart = i + 1;
						} else if (i > 0) {
							char ch2 = line.charAt(i - 1);
							if (isOperator(ch2)) {
								astart = i;
							} else astart = i;
						} else astart = 0;
						break;
					} else astart = i;
				}
				int a = Integer.valueOf(line.substring(astart, op));
				for (int i = op + 2; i < line.length(); i++) {
					char ch = line.charAt(i);
					if (!Character.isDigit(ch)) {
						bend = i;
						break;
					} else if (i == line.length() - 1) {
						bend = i + 1;
						break;
					} else bend = i;
				}
				int b = Integer.valueOf(line.substring(op + 1, bend));
				String result = String.valueOf(actions.get(line.charAt(op)).run(a, b));
				line = compile(astart, bend, line, result);
			} catch (Exception e) {
				ignore = op + 1;
			}
		}
		return line;
	}
	
	public static String evalPM(String line) {
		int ignore = 0;
		while (line.indexOf("+", ignore) >= 0 || line.indexOf("-", ignore) >= 0) {
			int op1 = line.indexOf("+", ignore);
			if (op1 < 0) op1 = line.length() + 1;
			int op2 = line.indexOf("-", ignore);
			if (op2 < 0) op2 = line.length() + 1;
			int op = Math.min(op1, op2);
			try {
				int astart = op;
				int bend = op + 2;
				for (int i = op - 1; i >= 0; i--) {
					char ch = line.charAt(i);
					if (!Character.isDigit(ch)) {
						if (ch != '-') {
							astart = i + 1;
						} else if (i > 0) {
							char ch2 = line.charAt(i - 1);
							if (isOperator(ch2)) {
								astart = i;
							} else astart = i;
						} else astart = 0;
						break;
					} else astart = i;
				}
				int a = Integer.valueOf(line.substring(astart, op));
				for (int i = op + 2; i < line.length(); i++) {
					char ch = line.charAt(i);
					if (!Character.isDigit(ch)) {
						bend = i;
						break;
					} else if (i == line.length() - 1) {
						bend = i + 1;
						break;
					} else bend = i;
				}
				int b = Integer.valueOf(line.substring(op + 1, bend));
				String result = String.valueOf(actions.get(line.charAt(op)).run(a, b));
				line = compile(astart, bend, line, result);
			} catch (Exception e) {
				ignore = op + 1;
			}
		}
		return line;
	}
	
	public static boolean isOperator(char ch) {
		return ch == '^' || ch == '*' || ch == '/' || ch == '+' || ch == '-';
	}
	
	public static String compile(int start, int end, String original, String input) {
		String result = original.substring(0, start);
		result += input;
		result += original.substring(end);
		return result;
	}
}

abstract class Action {
	public abstract int run(int a, int b);
}
