#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()
using namespace std;
using ll = long long;

namespace my {

template <typename KeyType, typename ValType> 
class MinHeap {

    struct Entry { KeyType k; ValType v; };
public:
    MinHeap() : cap(0), size(0), arr(nullptr) {}

    ~MinHeap() {
        delete[] arr;
    }

    void push(const KeyType& key, const ValType& value) {
        if ( size == cap ) { expand(); }

        arr[size] = {key, value};

        sift_up(size);
        ++size;
    }

    ValType top() {
        return arr[0].v;
    }

    void pop(void) {
        if (size == 0) return;

        --size;
        std::swap(arr[0], arr[size]);
        sift_down(0);
    }

    bool empty() const {
        return size == 0; 
    }

    size_t get_size() {
        return size;
    }

private:
    size_t size;
    size_t cap;
    Entry *arr;

    void expand () {
        size_t new_cap;

        if (cap == 0) {
             new_cap = 1;
        } else {
             new_cap = cap * 2;
        }

        Entry* tmp = new Entry[new_cap];
        for (size_t i = 0; i < size; i++) {
            tmp[i] = arr[i];
        }

        delete[] arr;
        arr = tmp;
        cap = new_cap;
    }

    void sift_up(size_t i) {
        while (i > 0) {
            size_t p = (i - 1) / 2;
            if (arr[p].k <= arr[i].k) break;
            std::swap(arr[p], arr[i]);
            i = p;
        }
    }

    void sift_down(uint32_t i) {
        while (true) {
            size_t l_idx = i * 2 + 1;
            size_t r_idx = l_idx + 1;
            size_t min_idx = i;

            if (l_idx < size && arr[min_idx].k > arr[l_idx].k) { 
                min_idx = l_idx;
            }

            if (r_idx < size && arr[min_idx].k > arr[r_idx].k) {
                min_idx = r_idx;
            }

            if (min_idx == i) break;

            std::swap(arr[i], arr[min_idx]);
            i = min_idx;
        }
    }
};

}

void solve() {
    int q;
    std::cin >> q;
 
    my::MinHeap<int, int> min_heap;
 
    while (q--) {
        int type;
        cin >> type;
 
        if (type == 1) {
            int val;
            cin >> val;
 
            min_heap.push(val, val);
        } else {
            if (!min_heap.empty()) {
                min_heap.pop();
            }
        }
        if (!min_heap.empty()) {
            cout << min_heap.top() << " ";
        } else {
            cout << -1 << " ";
        }
    }
    cout << "\n";
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t = 1;
    while (t--) {
        solve();
    }
}
