#include <iostream>
#include <queue>
#include <algorithm>
#include <set>
#include <map>
#include <stack>
#include <vector>
#include <string>
#include <deque>
#include <unordered_map>
#include <unordered_set>
#include <cmath>
#include <iomanip>
using namespace std;
#define ll long long
int n;
void ReadData() {
// TODO: Read input data here
}
void Solve() {
multiset<int> pq;
vector<int> elements;
cin >> n;
int ops, value;
for (int i = 0; i < n; i++){
cin >> ops;
if(ops == 1){
cin >> value;
pq.insert(value);
elements.push_back(value);
}
else if(ops == 2){
cin >> value;
value--;
auto it = pq.find(elements[value]);
if(it != pq.end()) pq.erase(it);
}
else {
cout << *pq.begin() << "\n";
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
freopen("heapuri.in", "r", stdin);
freopen("heapuri.out", "w", stdout);
int t = 1;
// cin >> t; // Uncomment for multiple test cases
while (t--) {
ReadData();
Solve();
}
return 0;
}