#include <iostream>
#include <cstdlib>
#include "Polino.h"

using namespace std;

class Pila {
    private:
      Poli pi[20];
      int top;
    public:
      Pila(void);
      void Push(const Poli& r);
      Poli Pop(void);
      bool Empty(void);
      Poli Top(void);
};

Pila::Pila()
{
   top= 0;
}

void Pila::Push(const Poli& r)
{
   pi[top++]= r;
}

Poli Pila::Pop(void)
{
   return pi[--top];
}

Poli Pila::Top(void)
{
   if (Empty())
      return Poli();
   else
      return pi[top-1];
}

bool Pila::Empty()
{
   return top==0;
}

int main(int argc, char* argv[])
{
   Pila  u;
   Poli  p, q;
   double a;
   do {
      int c= -1;
      while (!cin.eof() && isspace(c=cin.get()))
         ;
      if (cin.eof())
         break;
      switch (c) {
        case 'V':
        case 'v':  p= u.Pop(); 
                   cin >> a;
                   q= Poli(1,1)-Poli(a,0);
                   u.Push(p%q);
                   break;

        case 'p':
        case 'P':  
                   cin >> p;
                   u.Push(p);
                   break;

        case '+':  if (u.Empty()) 
                      break;
                   q= u.Pop();
                   if (u.Empty())
                      break;
                   p= u.Pop();
                   u.Push(p+q);
                   break;

        case '-':  if (u.Empty()) 
                      break;
                   q= u.Pop();
                   if (u.Empty())
                      break;
                   p= u.Pop();
                   u.Push(p-q);
                   break;

        case '*':  if (u.Empty()) 
                      break;
                   q= u.Pop();
                   if (u.Empty())
                      break;
                   p= u.Pop();
                   u.Push(p*q);
                   break;

        case '/':  if (u.Empty()) 
                      break;
                   q= u.Pop();
                   if (u.Empty())
                      break;
                   p= u.Pop();
                   u.Push(p/q);
                   break;

        case '%':  if (u.Empty()) 
                      break;
                   q= u.Pop();
                   if (u.Empty())
                      break;
                   p= u.Pop();
                   u.Push(p%q);
                   break;

       default:    break;
      }
      cout << ": " << u.Top() << endl;
   }  while(true);
   return EXIT_SUCCESS;
}





