#include <cstdio>
#include <algorithm>
#include <set>
#include <queue>

using namespace std;

multiset <int> st;
queue <int> q;

int main ()
{
    //freopen ("file.in", "r", stdin);

    int n;
    scanf ("%d", &n);

    for (int i = 1; i <= n; ++i)
    {
        int op;
        scanf ("%d", &op);

        if (op == 3)
        {
            auto it = st.end ();
            --it;

            printf ("%d\n", *it);
        }

        else if (op == 2)
        {
            int val = q.front ();
            auto it = st.find (val);
            st.erase (it);
            q.pop ();
        }

        else
        {
            int x;
            scanf ("%d", &x);

            q.push (x);
            st.insert (x);
        }
    }

    return 0;
}