#include <iostream>
#include <set>
#include <cmath>
using namespace std;
int main() {
int q = 0;
cin >> q;
set<int> nums;
for(int i = 0; i < q; i++) {
int op,x;
cin >> op >> x;
if(op == 1) {
if(nums.find(x) == nums.end()) {
nums.insert(x);
continue;
} else {
cout << "Already Exist" << endl;
continue;
}
}
if(op == 2) {
if(nums.empty()) {
cout << "Empty" << endl;
continue;
} else {
if(nums.find(x) != nums.end()) {//判断x是否在set里,直接就省去了判断边界条件时相等的判断
cout << x << endl;
nums.erase(x);
continue;
}
int prev = -1;
int last = -1;
auto it = nums.lower_bound(x);// lower_bound是在set中找比x大于或等于的一个数的迭代器
if(it == nums.begin()) { //查找set中的全部元素后,set的第一个元素就大于x
cout << *nums.begin() << endl;
nums.erase(*nums.begin());
continue;
}
if(it == nums.end()) { //查找set中的全部元素后,set中的(--end())也是小于x的,返回end()
cout << *(--nums.end()) << endl;
nums.erase(*(--nums.end()));
continue;
}
auto tmpit1 = it;
auto tmpit2 = --it;
// cout << "(tmpit2) " << *(tmpit2) << " (tmpit1) " << *(tmpit1) << endl;
if(abs(*(tmpit2) - x) > abs(*(tmpit1) - x)) {
cout << *tmpit1 << endl;
nums.erase(*tmpit1);
continue;
} else if (abs(*(tmpit2) - x) < abs(*(tmpit1) - x)) {
cout << *(tmpit2) << endl;
nums.erase(*(tmpit2));
continue;
} else{
cout << *(tmpit2) << endl;
nums.erase(*(tmpit2));
continue;
}
}
}
}
}
// 64 位输出请用 printf("%lld")