#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin >> N;
// stk:仓库里的集装箱重量(先进后出)
// mx :与 stk 等长,第 k 格记「从栈底到第 k 格为止的最大重量」
vector<int> stk, mx;
stk.reserve(N);
mx.reserve(N);
while (N--) {
int op;
cin >> op;
if (op == 0) {
int x;
cin >> x;
stk.push_back(x);
mx.push_back(mx.empty() ? x : max(mx.back(), x));
} else if (op == 1) {
if (!stk.empty()) { // 仓库为空时忽略出库操作
stk.pop_back();
mx.pop_back();
}
} else {
cout << (mx.empty() ? 0 : mx.back()) << '\n';
}
}
return 0;
}