#include <iostream>
#include <cstdio>
#include <stack>
#include <cstring>
using namespace std;
int r(char c)
{
switch(c)
{
case '#': return 0;
case '(': return 0;
case '+': return 1;
case '-': return 1;
case '*': return 2;
case '/': return 2;
case ')': return 3;
default: return -1;
}
}
int cal(int a, int b, char c) //运算
{
switch(c)
{
case '+': return a+b;
case '-': return a-b;
case '*': return a*b;
case '/': return a/b;
default: return -1;
}
}
int main()
{
char s[210];
int i;
while(cin.getline(s, sizeof(s)))
{
if(strcmp(s, "0") == 0) return 0;
int len = strlen(s);
s[len++] = ' ';
s[len++] = '#';
s[len] = '/0';
stack<char> f;
stack<int> dit;
f.push('#');
for(i = 0; i < len; i++)
{
if(s[i] == ' ') continue;
if(isdigit(s[i]))
{
int temp;
sscanf(s+i, "%d", &temp);
dit.push(temp);
while(isdigit(s[i+1])) i++;
}
else
{
bool ok = 1;
while(ok)
{
if(r(s[i]) > r(f.top()) && s[i] != ')' || s[i] == '(')
{
f.push(s[i]);
ok = 0;
}
else
{
if(s[i] == '#' && f.top() == '#') break;
if(s[i] == ')'){
while(f.top() != '('){
int b = dit.top(); dit.pop();
int a = dit.top(); dit.pop();
char c = f.top(); f.pop();
int d = cal(a, b, c);
dit.push(d);
}
f.pop();
ok = 0;
}
else{
if(f.top() == '(') {
ok = 0;
}
int b = dit.top(); dit.pop();
int a = dit.top(); dit.pop();
char c = f.top(); f.pop();
int d = cal(a, b, c);
dit.push(d);
}
if(s[i] == '#' && f.top() == '#') break;
}
}
}
}
int ret = dit.top();
printf("%d
", ret);
while(!f.empty()) f.pop();
while(!dit.empty()) dit.pop();
}
return 0;
}