#include <iostream> using namespace std; const int DEFAULT =10; const int NOFOUND=0x7fffffff; template <typename T> class MyStack { private: int _capacity,_rsp; int* _nums; public: MyStack(int n=DEFAULT):_rsp(0) { _capacity=n; _nums=new T[_capacity]; } ~MyStack(); T top ()const; void pop(); void push(const T& x); private: void expand(); }; // template <typename T> // MyStack<T>::MyStack(int n=DEFAULT):_rsp(0) // { // _capacity=n; // _nums=new T[_capacity]; // } template <typename T> MyStack<T>::~MyStack() { _capacity=0; _rsp=-1; delete []_nums; _nums=NULL; } template <typename T> void MyStack<T>::expand() { // assert at least one dupulicant if(_rsp<_capacity) return; T* _oldNums=_nums; _capacity=_capacity*7; _nums=new T[_capacity]; for(int i=_rsp-1;0<=i;--i) { _nums[i]=_oldNums[i]; } delete _oldNums; } template <typename T> T MyStack<T>::top ()const { if(_rsp==0) return (T)(NOFOUND); return _nums[_rsp-1]; } template <typename T> void MyStack<T>::pop() { if(_rsp==0) return ; --_rsp; } template <typename T> void MyStack<T>::push(const T& x) { expand(); _nums[_rsp++]=x; } int main() { ios::sync_with_stdio(false); int n,x; char c; MyStack<int> ms; while (cin >> n) { while(0<n--) { cin>>c; if(c=='A') { if(NOFOUND!=ms.top()) cout<<ms.top()<<endl; else cout<<"E"<<endl; } else if(c=='P') { cin>>x; ms.push(x); } else { ms.pop(); } } } } // 64 位输出请用 printf("%lld")