#include #include using namespace std; template class node { public: node(T key, node* next) : _key{key}, _next{next} {} node(T key) : _key{key}, _next{nullptr} {} const T& key() const { return _key; } T& key() { return _key; } const node*& next() const { return _next; } node*& next() { return _next; } private: T _key; node* _next; }; template class Coda { public: Coda() : _head{nullptr}, _tail{nullptr} {} ~Coda() { } Coda* enqueue(T val) { if(!_head) { _head = new node{val, nullptr}; _tail = _head; } else { _tail->next() = new node{val, nullptr}; _tail = _tail->next(); } return this; } node* pop() { if(!_head) return nullptr; node* elem = _head; delete _head; _head = elem->next(); return elem; } bool is_empty() { return _head == nullptr; } private: node* _head; node* _tail; }; int main() { ifstream in("input.txt"); ofstream out("output.txt"); for(int ts = 0; ts < 100; ++ts) { string t; int n; in >> t; switch(t.at(0)) { case 'b': { Coda* queue = new Coda{}; in >> n; bool e; for(int i = 0; i < n; ++i) { in >> e; queue->enqueue(e); } while(!queue->is_empty()) out << queue->pop()->key() << ' '; out << endl; break; } case 'd': { Coda* queue = new Coda{}; in >> n; double e; for(int i = 0; i < n; ++i) { in >> e; queue->enqueue(e); } while(!queue->is_empty()) out << queue->pop()->key() << ' '; out << endl; break; } case 'c': { Coda* queue = new Coda{}; in >> n; char e; for(int i = 0; i < n; ++i) { in >> e; queue->enqueue(e); } while(!queue->is_empty()) out << queue->pop()->key() << ' '; out << endl; break; } case 'i': { Coda* queue = new Coda{}; in >> n; int e; for(int i = 0; i < n; ++i) { in >> e; queue->enqueue(e); } while(!queue->is_empty()) out << queue->pop()->key() << ' '; out << endl; break; } } } in.close(); out.close(); return 0; }