import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        final Map<Character, Integer> map = new HashMap<>();
        map.put('+', 1);
        map.put('-', 1);
        map.put('*', 2);
        map.put('/', 2);
        
        // 多组输入:改用hasNextLine,适配题目每行一组数据的要求
        while (sc.hasNextLine()) {
            String s = sc.nextLine().trim();
            // 跳过空行,避免读取空字符串导致异常
            if (s.length() == 0) {
                continue;
            }
            // ============ 漏洞2修复:栈在循环内初始化,每次都是全新空栈 ============
            Stack<Integer> nums = new Stack<>();
            Stack<Character> ops = new Stack<>();
            int x = 0;
            
            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                if (Character.isDigit(c)) {
                    x = x * 10 + (c - '0');
                } else {
                    nums.push(x);
                    x = 0;
                    // ============ 漏洞1核心修复:增加nums.size()>=2判断!!! ============
                    // 必须同时满足:运算符栈非空 + 数字栈至少2个元素 + 优先级符合 → 才计算
                    while (!ops.isEmpty() && nums.size() >= 2 && map.get(ops.peek()) >= map.get(c)) {
                        int b = nums.pop();
                        int a = nums.pop();
                        char op = ops.pop();
                        switch (op) {
                            case '+': nums.push(a + b); break;
                            case '-': nums.push(a - b); break;
                            case '*': nums.push(a * b); break;
                            case '/': nums.push(a / b); break;
                            default: break;
                        }
                    }
                    ops.push(c);
                }
            }
            // 处理最后一个数字,强制入栈,避免遗漏
            nums.push(x);
            
            // ============ 最终计算:同样增加nums.size()>=2判断,杜绝空栈 ============
            while (!ops.isEmpty() && nums.size() >= 2) {
                int b = nums.pop();
                int a = nums.pop();
                char op = ops.pop();
                switch (op) {
                    case '+': nums.push(a + b); break;
                    case '-': nums.push(a - b); break;
                    case '*': nums.push(a * b); break;
                    case '/': nums.push(a / b); break;
                    default: break;
                }
            }
            // 最终栈里只剩一个结果,直接弹出输出
            System.out.println(nums.pop());
        }
        sc.close();
    }
}