#include<iostream>
#include<vector>
#include<deque>
#include<list>
using namespace std;

template<typename T,
        template<typename X > class Sequence  = std::deque > 
class Stack {
Sequence<T> _rep;
public:
void push(T e) {_rep.push_back(e);};
T pop() {T top = _rep.top();_rep.pop_back();return top;}
bool is_empty() const {return _rep.empty();}
};


main() {
  Stack<double,std::vector> sv;
  Stack<double,std::list>  sl;

  sv.push(3.1415926);
  sl.push(3.1415926);
  
}