#include <cstdlib> #include <iostream> #include <queue> #include <stack> #include <string> using namespace std; template <class T> class Stack { public: Stack() { _data = (T*)malloc(4 * sizeof(T)); _top = 0; _capacity = 4; } ~Stack() { free(_data); _top = _capacity = 0; } void push(T x) { if (_top == _capacity) { _capacity *= 2; _data = (T*)realloc(_data, _capacity * sizeof(T)); } _data[_top++] = x; } void pop() { _top--; } T query() { return _data[_top - 1]; } size_t size() { return _top; } private: T* _data; size_t _top; size_t _capacity; }; int main() { int n, x; cin >> n; string s; Stack<int> st; while (n--) { cin >> s; if (s == "push") { cin >> x; st.push(x); } else if (s == "pop") { if (st.size() == 0) { cout << "Empty" << endl; } else { st.pop(); } } else if (s == "query") { if (st.size() == 0) { cout << "Empty" << endl; } else { cout << st.query() << endl; // cout << st.top() << endl; } } else if (s == "size") { cout << st.size() << endl; } } return 0; }