#include <iostream>
#include <vector>
#include <stack>
using namespace std;


#define REP(i,x)for(int i=0;i<(int)x;i++)

// 逆ポーランド記法
// op!=0なら演算子
struct Parsed{
	char op;
	int value;
	int priority;
};
vector<Parsed> parse(const string &s){
	int op[256] = {}; // 演算子の情報
	// 演算子の情報を入れる
	op['+']=op['-']=2;
	op['*']=op['/']=3;
	op['(']=100;
	op[')']=1;
	stack<Parsed> stack;
	vector<Parsed> res;
	int it=0;
	while(it<(int)s.size()){
		int pri=0,value=0,opd=0;
		if(op[(int)s[it]]){
			pri=op[(int)s[it]];
			value=0;
			opd=s[it];
		}else{
			value=0;
			while(it<(int)s.size()&&isdigit(s[it])){
				value=value*10+s[it]-'0';
				it++;
			}
			it--;
			pri=99;
		}
		while(!stack.empty()&&pri<=stack.top().priority&&stack.top().op != '('){
			res.push_back(stack.top());
			stack.pop();
		}
		if(opd!=')'){
			stack.push((Parsed){opd,value,pri});
		}else{
			stack.pop();
		}
		it++;
	}
	while(!stack.empty()){
		res.push_back(stack.top());
		stack.pop();
	}
	return res;
}
int main() {
	string in;
	for(cin>>in;cin>>in;){
		in=in.substr(0,in.size()-1);
		vector<Parsed> parsed = parse(in);
		stack<int> stack;
		for(int i=0;i<(int)parsed.size();i++){
			if(parsed[i].op=='+'){
				int a=stack.top();stack.pop();
				int b=stack.top();stack.pop();
				stack.push(a+b);
			}else if(parsed[i].op=='-'){
				int a=stack.top();stack.pop();
				int b=stack.top();stack.pop();
				stack.push(b-a);
			}else if(parsed[i].op=='*'){
				int a=stack.top();stack.pop();
				int b=stack.top();stack.pop();
				stack.push(a*b);
			}else if(parsed[i].op=='/'){
				int a=stack.top();stack.pop();
				int b=stack.top();stack.pop();
				stack.push(b/a);
			}else{
				stack.push(parsed[i].value);
			}
		}
		cout<<stack.top()<<endl;
	}
	return 0;
}