#include <cctype>
#include <iostream>
#include <map>
#include <string>
#include <unordered_map>
#include <stack>
using namespace std;

unordered_map<char,  int> m{
    {'#',0},{'$',1},{'(',1},{'+',2},{'-',2},{'*',3},{'/',3}
};

int calculate(int a,int b,char c);
string preprocess(string &str1);

int main() 
{
    string m_expresion;
    while(cin>>m_expresion)
    {
        m_expresion=preprocess(m_expresion);
        m_expresion.push_back('$');
        stack<char> ops;ops.push('#');
        stack<int> nums;
        string donum;
        for(int i=0;i<m_expresion.size(); )
        {
            if(isdigit(m_expresion[i]))
            {
                donum.push_back(m_expresion[i]);
                ++i;
            }
            else 
            {
                if(donum!="")
                {
                    nums.push(stoi(donum));
                    donum="";
                } 
                if(m_expresion[i]==')')
                {
                        if(ops.top()!='(')
                        {
                            int nums2=nums.top();nums.pop();
                            int nums1=nums.top();nums.pop();
                            char op=ops.top();ops.pop();
                            int ans=calculate( nums1, nums2, op);
                            nums.push(ans);
                        }
                        else 
                        {
                            ++i;
                            ops.pop();
                        }
                }
                else if(m_expresion[i]=='(')
                {
                    ops.push('(');
                    ++i;
                }
                else if(m[ops.top()]<m[m_expresion[i]])   
                    {
                    ops.push(m_expresion[i]);
                    ++i;
                    }
                else 
                    {
                        int nums2=nums.top();nums.pop();
                        int nums1=nums.top();nums.pop();
                        char op=ops.top();ops.pop();
                        int ans=calculate( nums1, nums2, op);
                        nums.push(ans);
                    }
            }
        }
        cout<<nums.top();
    
    }
}


int calculate(int a,int b,char c)
{
    switch(c)
    {
        case '+':
            return a+b;
        case '-':
            return a-b;
        case '*':
            return a*b;
        case '/':
            return a-b;
    }
    return 0;
}

string preprocess(string &str1)
{
    if(str1[0]=='-')
    {
        str1="0"+str1;
    }
    for(int i=1;i<str1.size();++i)
    {
        if(
            str1[i-1]=='('&&
            str1[i]=='-'
            )
        {
            str1.insert(i,1,'0');
        }
    }
    return str1;

}




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