#include <bits/stdc++.h>
#define MAX 100
char stack[101];
int top=-1;
void fun( char a[],char b[]){
int len,j=-1;
len=strlen(a);
j=-1;
for(int i=0;i<len;i++){
switch(a[i]){
case '(':stack[++top]='(';break;
case '-':
case '+':while(top>=0&&stack[top]!='(') //当遇到"+-"时,到"("前的运算符全部出栈
b[++j]=stack[top--];
stack[++top]=' '; //运算符进栈前先进去一个' '
stack[++top]=a[i]; //运算符进栈
break;
case '*':
case '/':while(top>=0&&stack[top]!='('&&stack[top]!='+'&&stack[top]!='-')
b[++j]=stack[top--]; //当遇到"*/"时,到"( + -"前的运算符全部出栈
stack[++top]=' ';
stack[++top]=a[i];
break;
case')':while(stack[top]!='(')
b[++j]=stack[top--];
top--;
break;
default:
b[++j]=a[i];
if(a[i+1]<'0'||a[i+1]>'9')
b[++j]=' ';
}
}
while(top>=0)
b[++j]=stack[top--];
b[++j]=' ';
return ;
}
int compvalue(char exp[]) {
int i,len,sum=0,c;
top=-1;
int digit[MAX];
len=strlen(exp);
for(int i=0;i<len;i++){
switch(exp[i]){
case' ':break;
case'+':sum=digit[top]+digit[top-1];
digit[--top]=sum;
break;
case'-':sum=digit[top-1]-digit[top];
digit[--top]=sum;
break;
case'*':sum=digit[top]*digit[top-1];
digit[--top]=sum;
break;
case'/':sum=digit[top-1]/digit[top];
digit[--top]=sum;
break;
default:
c=0;
while(exp[i]>='0'&&exp[i]<='9'){
c=c*10+exp[i]-'0';
i++;
}
digit[++top]=c;
}
}
return digit[0];
}
int main()
{
char a[MAX],b[MAX];
gets(s);
fun(a,b);
puts(b);
cout<<compvalue(b);
return 0;
}