#include <bits/stdc++.h>
using namespace std;

struct type
{
    int value;
    bool is_max;
};


int main()
{
    stack<type> arr;
    stack<int> max;
    
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        int key;
        cin >> key;
        
        if (key == 1)
        {
            int x;
            cin >> x;
            if (max.size() == 0)
            {
                arr.push({x, true});
                max.push(x);
            }
            else
            {
                if (x > max.top())
                {
                    arr.push({x, true});
                    max.push(x);
                }
                else
                {
                    arr.push({x, false});
                }
            }
        }
        
        else if (key == 2)
        {
            if (arr.top().is_max) max.pop();
            arr.pop();
        }
        
        else if (key == 3)
        {
            cout << max.top() << "\n";
        }
    }
}