#include <iostream>
#include <stack>
#include <string>

using namespace std;

/*
   Kalkulator korzystający z odwrotnej notacji polskiej.
*/
int main()
{
   stack<int> results;
   cout << "Wprowadź liczby i operatory, rozdzielone spacjami, " << endl
      << "W, by wyświetlić wynik, albo Z, by zakończyć."  << endl;
   bool done = false;
   while (!done)
   {
      string input;
      cin >> input;

      if (input == "+" || input == "-" || input == "*" || input == "/")
      {
         // Jeśli polecenie jest operatorem,
         // zdejmij ze stosu argumenty i odłóż na nim wynik.

         if (results.size() < 2)
         {
            cout << "Niewystarczająca liczba argumentów" << endl;
            return 1;
         }

         // Zwróć uwagę, że na szczycie stosu znajduje się drugi argument.

         int arg2 = results.top();
         results.pop();
         int arg1 = results.top();
         results.pop();

         if (input == "+")
         {
            results.push(arg1 + arg2);
         }
         else if (input == "-")
         {
            results.push(arg1 - arg2);
         }
         else if (input == "*")
         {
            results.push(arg1 * arg2);
         }
         else
         {
            results.push(arg1 / arg2);
         }
      }
      else if (input == "Z" || input == "z"
         || input == "W" || input == "w")
      {
         if (results.size() > 0)
         {
            cout << results.top() << endl;
         }
         if (input == "Z" || input == "z")
         {
            done = true;
         }
      }
      else
      {
         // To nie operator -- odłóż na stos liczbę wejściową.

         results.push(stoi(input));
      }
   }
   return 0;
}

