#include <iostream>
#include <string>
#include <stack>
// #include <cctype>

using namespace std;

int compute(string&s, int& left) //注意这里 要作为可改变的下标
{
    int n = s.size();
    int ans = 0;
    char op = '+';

    stack<int> st;

    while(left<n)
    {
        if(s[left]=='(')
        {
            left++;
            ans = compute(s, left); // 遇到括号 就计算后面那段的结果
            
        }

        while(left<n && isdigit(s[left]))
        {
            //是数字就转为一个整数
            ans = s[left]-'0' + ans*10; 
            left++;
        }
        // 碰到计算符了 初始是+
        switch (op) 
        {
            case '+': 
                st.push(ans); // 本来站内数字就要相加 直接入栈
                break;
            case '-':
                st.push(-ans);
                break;
            case '*':
                {
                   // 当前数和栈顶做乘法
                    int tmp = st.top();
                    tmp *= ans;
                    st.pop(); // 出栈
                    st.push(tmp); // 乘积入栈
                    break; 
                }
                
            case '/':
                {
                    // 当前数和栈顶做除法
                    int tmp = st.top();
                    tmp /= ans;
                    st.pop();
                    st.push(tmp);
                    break;
                }
        
        }

        if(left>=n) // 若已经遍历完 就跳出 适用于)在尾部的情况
        {
            break;
        }
        // 记录清空
        ans = 0;
        op = s[left]; // 真实的首个数字后的符号 每次只在这里获取操作符!
        if(op==')')
        {
            left++;
            //右括号
            break;
        }

        left++;


    }

    // 操作完后 对栈内所有数字求和
    int sum = 0;
    while(st.size()>0)
    {
        sum+=st.top();
        st.pop();
    }

    return sum;

}

int main() {
    string dat;
    cin>>dat;
    int left = 0;
    int ans = compute(dat, left);

    cout<<ans;


}
// 64 位输出请用 printf("%lld")