#include<iostream>
using namespace std;


template<typename T> class Stack {
public:
 static const size_t N=100;
private:	

 T _rep[N];
 size_t _top;

public:

 Stack():_top(0) {};

 void push(T val) {_rep[_top++]=val;}
 T pop()          {return _rep[--_top];}
 bool is_empty()  const   {return (_top==0);} 
};


main() {
Stack<string> st ;

st.push("ania");
st.push("asia");
st.push("basia");

while(!st.is_empty() ){
	cout<<st.pop()<<endl;
}

Stack<int>    si;
Stack<double> sd;
//sd=si; /*bÅ?Ä?d: to sÄ? obiekty rÃ³Å¼nych klas*/


}