#include<stdio.h>
#include<stack>
#include<string.h>
#include<iostream>
int flag=0;
using namespace std;
#define N 10010
int pri(char c)
{
if(c=='('){
return 3;
}
else if(c=='+'||c=='-')
return 1;
else
return 2;
}
stack<int> data;
stack<char> fu;
void compu()
{
char cc=fu.top();
fu.pop();
int num,a,b;
b=data.top();
data.pop();
a=data.top();
data.pop();
if(cc=='+')
num=a+b;
else if(cc=='-')
num=a-b;
else if(cc=='*')
num=a*b;
else
num=a/b;
data.push(num);
}
int jisuan(char a[])
{
int len=strlen(a);
for(int i=0;i<len;i++){
if(a[i]>='0'&&a[i]<='9'){
int num=a[i]-'0',j;
for(j=i+1;a[j]>='0'&&a[j]<='9'&&j<len;j++){
num=num*10+a[j]-'0';
}
if(flag==1){
num=-num;
flag=0;
}
data.push(num);
i=j-1;
}
else {
if(a[i]=='-'&&(a[i+1]>='0'&&a[i+1]<='9')&&(!(a[i-1]>='0'&&a[i-1]<='9')||a[i-1]=='0'))
{flag=1;
continue;
}
if(fu.size()==0){
fu.push(a[i]);
}
else{
char f1=fu.top();
if(a[i]==')'){
while(fu.top()!='('){
compu();
}
fu.pop();
}
else if(pri(a[i])<=pri(f1)&&f1!='('){
compu();
fu.push(a[i]);
}
else
fu.push(a[i]);
}
}
}
while(fu.size()){
compu();
}
int res=data.top();
data.pop();
return res;
}
int main()
{
char a[N];
while(scanf("%s",a)!=EOF){
cout<<jisuan(a)<<endl;
}
}