/*#include <stdio.h>
#define SIZE 201
int stack[SIZE];
int top=-1; //data가 마지막으로 저장된 위치
void push(int data)
{
if(top==SIZE-1) return ;
top++;
stack[top]=data;
}
int pop()
{
if(top==-1) return 0;
return stack[top--];
}
void topp()
{
if(top==-1) printf("-1\n");
else printf("%d\n",stack[top]);
}
void size()
{
printf("%d\n",top+1);
}
void empty()
{
if (top==-1) printf("true\n");
else printf("false\n");
}
int main()
{
int n,i,j,a,num=0;
char str[50];
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
gets(str);
if(str[1]=='u') //push
{
for(j=6;;j++)
{
num=num*10+str[j]-'0';
if(str[j+1]==' ')
{
push(num);
num=0;
break;
}
}
}
else if(str[0]=='p') //pop
{
pop();
}
else if(str[0]=='t')//top
{
topp();
}
else if (str[0]=='s')//size
{
size();
}
else if (str[0]=='e')//empty
{
empty();
}
}
}*/
#include <stdio.h>
#define SIZE 201
int stack[SIZE];
int top=-1;
void push(int data)
{
if(top==SIZE-1) return ;
top++;
stack[top]=data;
}
int pop()
{
if(top==-1) return 0;
return stack[top--];
}
int main()
{
int a,b,n,i,j,num=0;
char str[201];
gets(str);
n=strlen(str);
for(i=0;i<n;i++)
{
if('0'<=str[i] && str[i]<='9')
{
num=num*10+str[i]-'0';
if(str[i+1]==' ')
{
push(num);
num=0;
}
}
else if(str[i]=='+')
{
a=pop();
b=pop();
push(a+b);
}
else if(str[i]=='*')
{
a=pop();
b=pop();
push (a*b);
}
else if(str[i]=='-')
{
a=pop();
b=pop();
push (b-a);
}
}
printf("%d",pop());
return 0;
}