template<typename T>

class Stack {
private:
  static const int N = 1000;
  T elem[1000];
  unsigned int top=0;
public:
  Stack(){};
  ~Stack(){};

  unsigned int size(){
    return top;
  }

  bool empty() const {
    return top==0;
  }

  T peek(){
    return elem[top];
  }

  void push(T a){
    elem[++top]=a;
  }

  T pop(){
    return elem[top--];
  }
};
