//#include <stdio.h>
//
//void myswap(int* a, int* b)
//{
// int t;
// if(*a>*b)
// {
// t=*b;
// *b=*a;
// *a=t;
// }
//}
//
//main()
//{
// int a, b;
// scanf("%d%d", &a, &b);
// myswap(&a, &b);
// printf("%d %d", a, b);
//}
//#include <stdio.h>
//char* mysubstr(char *str, int start, int count)
//{
// str[start+count]=0;
// return str+start;
//}
//
//int main()
//{
// char str[100];
// int start, count;
// scanf("%s", str);
// scanf("%d %d", &start, &count);
// printf("%s", mysubstr(str, start, count));
// return 0;
//}
/*
#include <stdio.h>
int main()
{
int data=10;
int *ptr;
ptr= &data;
printf("ptr : %#x, *ptr : %d\n", ptr,*ptr);
}
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
#define SIZE 200
int stack[SIZE];
int top=-1;
void push(int data)
{
//if(top==SIZE-1) return ;
stack[++top]=data;
}
int pop()
{
//if(top==-1) return 0;
return stack[top--];
}
void view()
{
for(int i=0; i<=top; i++)
{
printf("%d ",stack[i]);
}
printf("\n");
}
int main()
{
char str[201];
int a,b;
gets(str);
int num=0;
for(int i=0; i<strlen(str); i++)
{
if('0'<=str[i]&&str[i]<='9')
{
if(str[i+1]!=' ')
{
num=num*10+str[i]-'0';
}
else
{
push(num*10+str[i]-'0');
num=0;
}
}
else if(str[i]=='*' || str[i]=='-' || str[i]=='+')
{
a=pop();
b=pop();
if(str[i]=='*')
{
push(b*a);
}
else if(str[i]=='+')
{
push(b+a);
}
else if(str[i]=='-')
{
push(b-a);
}
}
}
printf("%d",pop());
return 0;
}