#include <stdio.h>
char E[100012],S[100012],O[7]={'\n','+','-','*','/','(',')'};
int C[6][7] = {{4,1,1,1,1,1,5},
{2,2,2,1,1,1,2},
{2,2,2,1,1,1,2},
{2,2,2,2,2,1,2},
{2,2,2,2,2,1,2},
{5,1,1,1,1,1,3}},
s,n,T[100012],t,j,err;
int cauta ( char c )
{
int i=0;
for (i=0;c!=O[i];i++);
return i;
}
void calcul ( char c )
{
switch (c)
{
case '+' : T[t-2]+=T[t-1];T[--t]=0; break;
case '-' : T[t-2]-=T[t-1];T[--t]=0; break;
case '*' : T[t-2]*=T[t-1];T[--t]=0; break;
case '/' : T[t-2]/=T[t-1];T[--t]=0; break;
default : break;
}
}
void caz()
{
int b=cauta(S[s]);
int a=cauta(E[j]);
switch (C[b][a])
{
case 1 : S[++s]=E[j++]; break;
case 2 : calcul(S[s--]); break;
case 3 : j++;S[s--]=0; break;
case 4 : err=1; break;
default : break;
}
}
int expresie ()
{
}
int main ()
{
fgets ( E , 100010 , fopen ( "evaluare.in" , "r" ) );
S[0]='\n';
freopen ( "evaluare.out" , "w" , stdout );
t=0;
for (err=0;!err;caz())
{
if (E[j]>='0'&&E[j]<='9')
{
while (E[j]>='0'&&E[j]<='9') T[t]=T[t]*10+E[j++]-'0';
t++;
}
}
printf ( "%d\n" , T[t-1] );
fclose ( stdout );
}