#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, "##### コマンドライン引数で逆ポーランド記法を入力してください\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;
}