class HelloWorld {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
//        优先级运算符
        Map<Character, Integer> map = new HashMap<>();
        map.put('+', 1);
        map.put('-', 1);
        map.put('/', 2);
        map.put('*', 2);
//        预处理字符串
        s = s.replace("(-", "(0-").replace("(+", "(0+").replace(" ", "");
        if (s.charAt(0) == '-') s = '0' + s;

        Stack<Character> op = new Stack<>();
        Stack<Integer> nums = new Stack<>();
        char[] chars = s.toCharArray();
        //        3*5+8-0*3-6+0+0  3+(2*3)-6+(3*2)
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == '(') {// 遇到左括号直接压入运算符栈
                op.push(chars[i]);
            } else if (chars[i] == ')') {// 遇到有括号  当运算符栈顶不是左括号时 计算 结束后弹出()->
                while (!op.isEmpty() && op.peek() != '(') {
                    calc(nums, op);
                }
                op.pop();
            } else {
//                数字
                if (Character.isDigit(chars[i])) {// 遇到数字压入栈
                    int j = 0, k = i;
                    while (k < chars.length && Character.isDigit(chars[k])) {   // 123+233+...
                        j = j * 10 + (chars[k] - '0');
                        k++;
                    }
                    i = k - 1;
                    nums.push(j);
                } else {
                  //遇到运算符 当栈顶不是左括号时 && 满足优先级时 =>计算 结束后压入运算符
                    while (!op.isEmpty() && op.peek() != '('  
                            && (map.get(op.peek()) >= map.get(chars[i]))) {
                        calc(nums, op);
                    }
                    op.push(chars[i]);
                }
            }

        }
        while (!op.isEmpty()) {//当运算符栈不为空  计算
            calc(nums, op);
        }

        System.out.println(nums.peek()); 
    }
  
      private static void calc(Stack<Integer> nums, Stack<Character> op) {
        if (op.isEmpty()) {
            return;
        }
        if (nums.isEmpty() || nums.size() < 2) {
            return;
        }
//        0-1+(0-1*5+2)
        char pop = op.pop();
        Integer pop2 = nums.pop();
        Integer pop1 = nums.pop();

        switch (pop) {
            case '+':
                nums.push(pop1 + pop2);
                break;
            case '-':
                nums.push(pop1 - pop2);
                break;
            case '*':
                nums.push(pop1 * pop2);
                break;
            case '/':
                nums.push(pop1 / pop2);
                break;
        }

    }
}