#include <stdio.h>
#include <string.h>
#include <ctype.h>

int stack[100];
int stack_used;
int debug = 1;

int emptystack(){
	if (stack_used == 0) return 1;
	return 0;
}

void initstack(){
	stack_used = 0;
}

void push(int  x){
	stack[stack_used] = x;
	stack_used++;
}

int pop(){
	if(emptystack()){
		fprintf(stderr, "##### 繧ケ繧ソ繝�け縺檎ゥコ縺ォ縺ェ縺」縺ヲ縺�∪縺兔n");
		return 0;
	}
	stack_used--;
	return stack[stack_used];
}

int top(){
	return stack[stack_used-1];
}

void print_stack(){
	int *s = stack;
	printf("繧ケ繧ソ繝�け縺ョ荳ュ霄ォ:");
	while(s < &stack[stack_used]){
		printf(" %d", *s);
		s++;
	}
	printf("\n");
}

int main(int argc, char *argv[]){
	int head, next;
	char *input;
	
	if(argc <= 1){
		fprintf(stderr, "##### 繧ウ繝槭Φ繝峨Λ繧、繝ウ蠑墓焚縺ァ騾��繝シ繝ゥ繝ウ繝芽ィ俶ウ輔r蜈・蜉帙@縺ヲ縺上□縺輔>\n");
		return 1;
	}
	
	input = argv[1];
	
	for(head = 0; head < strlen(input); head = next+1){
		next = head;
		while(input[next] != ' ' && input[next] != '\0')next++;
		
		if(isdigit(input[head])){
			int num;
			sscanf(&input[head], "%d", &num);
			if(debug) printf("<- %d (謨ー蛟、)\n", num);
			push(num);
		}
		else{
			int num1, num2, answer;
			switch(input[head]){
			case '+':
				if(debug) printf("<- '+' (貍皮ョ怜ュ�)\n");
				num1 = pop();
				num2 = pop();
				answer = num2 + num1;
				push(answer);
				break;
			case '-':
				if(debug) printf("<- '-' (貍皮ョ怜ュ�)\n");
				num1 = pop();
				num2 = pop();
				answer = num2 - num1;
				push(answer);
				break;
			case '*':
				if(debug) printf("<- '*' (貍皮ョ怜ュ�)\n");
				num1 = pop();
				num2 = pop();
				answer = num2 * num1;
				push(answer);
				break;
			case '/':
				if(debug) printf("<- '/' (貍皮ョ怜ュ�)\n");
				num1 = pop();
				num2 = pop();
				answer = num2 / num1;
				push(answer);
				break;
			default:
				fprintf(stderr, "##### '%c' 縺ッ譛ェ遏・縺ョ貍皮ョ怜ュ舌〒縺兔n", input[head]);
			}
		}
		if(debug) print_stack();
	}
	printf("遲斐∴ %d\n", top());
	
	return 0;
}