//https://www.nowcoder.com/practice/9566499a2e1546c0a257e885dfdbf30d?tpId=37&rp=1&ru=%2Fexam%2Foj%2Fta&qru=%2Fexam%2Foj%2Fta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&difficulty=&judgeStatus=&tags=&title=54&gioEnter=menu

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

char clist[7][7] = {
    {'>', '>', '<', '<', '<', '>', '>'},
    {'>', '>', '<', '<', '<', '>', '>'},
    {'>', '>', '>', '>', '<', '>', '>'},
    {'>', '>', '>', '>', '<', '>', '>'},
    {'<', '<', '<', '<', '<', '=', '.'},
    {'.', '.', '.', '.', '.', '.', '.'},
    {'<', '<', '<', '<', '<', '.', '.'},
};  //二维数组列表初始化时需要注意逗号的使用,以及全局变量需要加';'

string s = "+-*/()#";

char precede(char oldc, char newc){
    int i = s.find(oldc);
    int j = s.find(newc);
    return clist[i][j];

}

int computer(int n, char op, int m){
    switch(op){
        case '+':
            return m+n;
        case '-':
            return m-n;
        case '*':
            return m*n;
        case '/':
            return m/n;
    }
    return 0;   //只有switch的函数中需要加return

}

int main() {
    string str;

    while(cin >> str){

        str+='#';
        vector<char> opt;
        vector<int> opn;
        int i = 0;

        opt.push_back('#');

        while((opt.back()!='#')||(str[i]!='#')){
            int tem = i;

            if(str[i]=='-'&&(i==0||str[i-1]=='('))
                tem++;

            while(isdigit(str[tem]))    //数字有正负
                tem++;

            //cout << tem << i << "!" << endl;

            if(tem!=i){
                opn.push_back(stoi(str.substr(i, tem-i)));
                i = tem;
                continue;
            }
            else
                switch(precede(opt.back(), str[i])){
                    case '<' :
                        opt.push_back(str[i]);
                        break;
                    case '=' :
                        opt.pop_back();
                        break;
                    case '>' :
                        int n = opn.back();
                        opn.pop_back();
                        int m = opn.back();
                        opn.pop_back();
                        opn.push_back(computer(n, opt.back(), m));  //需注意出栈顺序
                        opt.pop_back();
                        i--;    //若进行比较,则不读入字符
                        break;

            }

            i++;


//            for(const char &c:opt)
//                cout << c;
//            cout << endl;
//
//            for(const int &c:opn)
//                cout << c;
//            cout << endl;

        }

        cout << opn.back() << endl;
    }
}