#include using namespace std; template struct SegmentTree{ public: SegmentTree(int _n):n(_n),li(0),v(_n<<1,e()){} T prod(int l,int r){ resolve(); l+=n;r+=n; T lret=e(),rret=e(); while(l>=1;r>>=1; } return op(lret,rret); } T &operator[](int i){ resolve(); return v[li=i+n]; } private: int n,li; vector v; void resolve(){for(;li>>=1;) v[li]=op(v[li<<1],v[li<<1|1]);} }; int op(int x,int y){return max(x,y);} int e(){return 0;} int main(){ int q; cin>>q; SegmentTree seg(q); int idx=0; for(int i=0;i>op>>a; if(op==1) seg[idx++]=a; if(op==2) cout<