#include<bits/stdc++.h>
#define TIME (1.0* clock()/CLOCKS_PER_SEC)
#define pb push_back
#define eb emplace_back
#define id1 (id<<1)
#define id2 (id<<1)|1
#define ll long long
#define ii pair<int,int>
#define vi vector<int>
#define vii vector<pair<int,int>>
#define vl vector<long long>
#define vll vector <pair<ll,ll>>
#define li pair<long long,int>
#define vil vector <pair<int,ll>>
#define db double
#define ff first
#define ss second
#define lb lower_bound
#define ub upper_bound
#define FOR(i, a, b) for (int i = (a); i <=(b); i++)
#define F0R(i, a) FOR(i, 0, a-1)
#define ROF(i, a, b) for (int i = (b); i >= (a); i--)
#define R0F(i, a) ROF(i, 0, a-1)
#define rep(a) F0R(_, a)
#define each(a, x) for (auto &a : x)
#define ALL(x) (x).begin(),(x).end()
#define pq priority_queue <li, vector <li>, greater <li>>
using namespace std;
const int maxn=3e5;
#define int long long
int n, sqrtn;
bool check[maxn];
int a[maxn], b[maxn];
struct Line {
int a, b;
mutable double xleft;
bool operator<(const Line &o) const { return a < o.a; }
double intersect(const Line &o) const {
return (double)(o.b - b) / (a - o.a);
}
};
vector<Line> groupHull[maxn];
vector<Line> full[maxn];
int group(int i) {
return (i-1)/sqrtn + 1;
}
void buildHull(int id) {
auto &lines = full[id];
sort(ALL(lines));
vector<Line> filtered;
for (int i = 0; i < lines.size(); ++i) {
if (!filtered.empty() && filtered.back().a == lines[i].a) {
if (filtered.back().b < lines[i].b)
filtered.back().b = lines[i].b;
} else {
filtered.push_back(lines[i]);
}
}
vector<Line> hull;
for (auto l : filtered) {
while (hull.size() >= 2) {
auto &l1 = hull[hull.size()-2];
auto &l2 = hull[hull.size()-1];
if (l1.intersect(l2) >= l1.intersect(l)) hull.pop_back();
else break;
}
hull.push_back(l);
}
groupHull[id] = hull;
}
int eval(const Line &l, int x) {
return l.a * x + l.b;
}
int queryHull(const vector<Line> &hull, int x) {
int l = 0, r = hull.size() - 1;
while (l < r) {
int m = (l + r) / 2;
if (eval(hull[m], x) <= eval(hull[m+1], x)) l = m + 1;
else r = m;
}
return eval(hull[l], x);
}
void solve() {
cin >> n;
sqrtn = sqrt(n) + 1;
vector<ii> op(n+1);
for (int i = 1; i <= n; i++) {
int t; cin >> t;
if (t == 1) {
int A, B; cin >> A >> B;
a[i] = A; b[i] = B;
check[i] = true;
int g = group(i);
full[g].pb({A, B});
buildHull(g);
}
else if (t == 2) {
int x;
cin>>x;
check[x] = false;
int g = group(x);
full[g].clear();
for (int j = (g-1)*sqrtn+1; j <= min(n, g*sqrtn); j++) {
if (check[j]) full[g].pb({a[j], b[j]});
}
buildHull(g);
}
else if (t == 3) {
int x; cin >> x;
int res = LLONG_MIN;
for (int g = 1; g <= group(n); g++) {
if (!groupHull[g].empty()) {
res = max(res, queryHull(groupHull[g], x));
}
}
if(res==LLONG_MIN) cout<<"EMPTY SET\n";
else cout << res << "\n";
}
}
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
if (fopen("TASK.INP", "r")) {
freopen("TASK.INP", "r", stdin);
freopen("TASK.OUT", "w", stdout);
}
int ntest = 1;
for (int i = 1; i <= ntest; i++) solve();
cerr << "\nTime elapsed " << TIME << "s.\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBUSU1FICgxLjAqIGNsb2NrKCkvQ0xPQ0tTX1BFUl9TRUMpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZWIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgaWQxIChpZDw8MSkKI2RlZmluZSBpZDIgKGlkPDwxKXwxCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHZpIHZlY3RvcjxpbnQ+CiNkZWZpbmUgdmlpIHZlY3RvcjxwYWlyPGludCxpbnQ+PiAKI2RlZmluZSB2bCB2ZWN0b3I8bG9uZyBsb25nPgojZGVmaW5lIHZsbCB2ZWN0b3IgPHBhaXI8bGwsbGw+PgojZGVmaW5lIGxpIHBhaXI8bG9uZyBsb25nLGludD4KI2RlZmluZSB2aWwgdmVjdG9yIDxwYWlyPGludCxsbD4+CiNkZWZpbmUgZGIgZG91YmxlCiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKI2RlZmluZSBsYiBsb3dlcl9ib3VuZAojZGVmaW5lIHViIHVwcGVyX2JvdW5kCiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvciAoaW50IGkgPSAoYSk7IGkgPD0oYik7IGkrKykKI2RlZmluZSBGMFIoaSwgYSkgRk9SKGksIDAsIGEtMSkKI2RlZmluZSBST0YoaSwgYSwgYikgZm9yIChpbnQgaSA9IChiKTsgaSA+PSAoYSk7IGktLSkKI2RlZmluZSBSMEYoaSwgYSkgUk9GKGksIDAsIGEtMSkKI2RlZmluZSByZXAoYSkgRjBSKF8sIGEpCiNkZWZpbmUgZWFjaChhLCB4KSBmb3IgKGF1dG8gJmEgOiB4KQojZGVmaW5lIEFMTCh4KSAoeCkuYmVnaW4oKSwoeCkuZW5kKCkKI2RlZmluZSBwcSBwcmlvcml0eV9xdWV1ZSA8bGksIHZlY3RvciA8bGk+LCBncmVhdGVyIDxsaT4+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgbWF4bj0zZTU7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwoKaW50IG4sIHNxcnRuOwpib29sIGNoZWNrW21heG5dOwppbnQgYVttYXhuXSwgYlttYXhuXTsKCnN0cnVjdCBMaW5lIHsKICAgIGludCBhLCBiOyAKICAgIG11dGFibGUgZG91YmxlIHhsZWZ0OwogICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTGluZSAmbykgY29uc3QgeyByZXR1cm4gYSA8IG8uYTsgfQogICAgZG91YmxlIGludGVyc2VjdChjb25zdCBMaW5lICZvKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIChkb3VibGUpKG8uYiAtIGIpIC8gKGEgLSBvLmEpOwogICAgfQp9OwoKdmVjdG9yPExpbmU+IGdyb3VwSHVsbFttYXhuXTsKdmVjdG9yPExpbmU+IGZ1bGxbbWF4bl07CgppbnQgZ3JvdXAoaW50IGkpIHsKICAgIHJldHVybiAoaS0xKS9zcXJ0biArIDE7Cn0KCnZvaWQgYnVpbGRIdWxsKGludCBpZCkgewogICAgYXV0byAmbGluZXMgPSBmdWxsW2lkXTsKICAgIHNvcnQoQUxMKGxpbmVzKSk7CiAgICB2ZWN0b3I8TGluZT4gZmlsdGVyZWQ7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpbmVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgaWYgKCFmaWx0ZXJlZC5lbXB0eSgpICYmIGZpbHRlcmVkLmJhY2soKS5hID09IGxpbmVzW2ldLmEpIHsKICAgICAgICAgICAgaWYgKGZpbHRlcmVkLmJhY2soKS5iIDwgbGluZXNbaV0uYikKICAgICAgICAgICAgICAgIGZpbHRlcmVkLmJhY2soKS5iID0gbGluZXNbaV0uYjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmaWx0ZXJlZC5wdXNoX2JhY2sobGluZXNbaV0pOwogICAgICAgIH0KICAgIH0KICAgIHZlY3RvcjxMaW5lPiBodWxsOwogICAgZm9yIChhdXRvIGwgOiBmaWx0ZXJlZCkgewogICAgICAgIHdoaWxlIChodWxsLnNpemUoKSA+PSAyKSB7CiAgICAgICAgICAgIGF1dG8gJmwxID0gaHVsbFtodWxsLnNpemUoKS0yXTsKICAgICAgICAgICAgYXV0byAmbDIgPSBodWxsW2h1bGwuc2l6ZSgpLTFdOwogICAgICAgICAgICBpZiAobDEuaW50ZXJzZWN0KGwyKSA+PSBsMS5pbnRlcnNlY3QobCkpIGh1bGwucG9wX2JhY2soKTsKICAgICAgICAgICAgZWxzZSBicmVhazsKICAgICAgICB9CiAgICAgICAgaHVsbC5wdXNoX2JhY2sobCk7CiAgICB9CiAgICBncm91cEh1bGxbaWRdID0gaHVsbDsKfQoKaW50IGV2YWwoY29uc3QgTGluZSAmbCwgaW50IHgpIHsKICAgIHJldHVybiBsLmEgKiB4ICsgbC5iOwp9CgppbnQgcXVlcnlIdWxsKGNvbnN0IHZlY3RvcjxMaW5lPiAmaHVsbCwgaW50IHgpIHsKICAgIGludCBsID0gMCwgciA9IGh1bGwuc2l6ZSgpIC0gMTsKICAgIHdoaWxlIChsIDwgcikgewogICAgICAgIGludCBtID0gKGwgKyByKSAvIDI7CiAgICAgICAgaWYgKGV2YWwoaHVsbFttXSwgeCkgPD0gZXZhbChodWxsW20rMV0sIHgpKSBsID0gbSArIDE7CiAgICAgICAgZWxzZSByID0gbTsKICAgIH0KICAgIHJldHVybiBldmFsKGh1bGxbbF0sIHgpOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG47CiAgICBzcXJ0biA9IHNxcnQobikgKyAxOwogICAgdmVjdG9yPGlpPiBvcChuKzEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaW50IHQ7IGNpbiA+PiB0OwogICAgICAgIGlmICh0ID09IDEpIHsKICAgICAgICAgICAgaW50IEEsIEI7IGNpbiA+PiBBID4+IEI7CiAgICAgICAgICAgIGFbaV0gPSBBOyBiW2ldID0gQjsKICAgICAgICAgICAgY2hlY2tbaV0gPSB0cnVlOwogICAgICAgICAgICBpbnQgZyA9IGdyb3VwKGkpOwogICAgICAgICAgICBmdWxsW2ddLnBiKHtBLCBCfSk7CiAgICAgICAgICAgIGJ1aWxkSHVsbChnKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAodCA9PSAyKSB7CiAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICBjaW4+Png7CiAgICAgICAgICAgIGNoZWNrW3hdID0gZmFsc2U7CiAgICAgICAgICAgIGludCBnID0gZ3JvdXAoeCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBmdWxsW2ddLmNsZWFyKCk7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAoZy0xKSpzcXJ0bisxOyBqIDw9IG1pbihuLCBnKnNxcnRuKTsgaisrKSB7CiAgICAgICAgICAgICAgICBpZiAoY2hlY2tbal0pIGZ1bGxbZ10ucGIoe2Fbal0sIGJbal19KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBidWlsZEh1bGwoZyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHQgPT0gMykgewogICAgICAgICAgICBpbnQgeDsgY2luID4+IHg7CiAgICAgICAgICAgIGludCByZXMgPSBMTE9OR19NSU47CiAgICAgICAgICAgIGZvciAoaW50IGcgPSAxOyBnIDw9IGdyb3VwKG4pOyBnKyspIHsKICAgICAgICAgICAgICAgIGlmICghZ3JvdXBIdWxsW2ddLmVtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICByZXMgPSBtYXgocmVzLCBxdWVyeUh1bGwoZ3JvdXBIdWxsW2ddLCB4KSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYocmVzPT1MTE9OR19NSU4pIGNvdXQ8PCJFTVBUWSBTRVRcbiI7CiAgICAgICAgICAgIGVsc2UgY291dCA8PCByZXMgPDwgIlxuIjsKICAgICAgICB9CiAgICB9Cn0KCnNpZ25lZCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKTsKICAgIGlmIChmb3BlbigiVEFTSy5JTlAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbigiVEFTSy5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJUQVNLLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGludCBudGVzdCA9IDE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBudGVzdDsgaSsrKSBzb2x2ZSgpOwogICAgY2VyciA8PCAiXG5UaW1lIGVsYXBzZWQgIiA8PCBUSU1FIDw8ICJzLlxuIjsKICAgIHJldHVybiAwOwp9