template <class T> 
struct StackElem
{
  StackElem(T d, StackElem *n)
    { data = d; next = n; }
  T data;
  StackElem *next;
};

template <class T>
class Stack
{
 public:
  Stack(); 
  ~Stack();
  
  void Push(T x);
  T Pop();


 private:
  StackElem<T> *head;
};