#include <iostream>
#include <queue>
using namespace std;
struct complex{
    int real;
    int hypo;
    int value;
    complex(int a,int b){
        real=a;
        hypo=b;
        value=a*a+b*b;
    }
    bool operator< (complex y) const{
        return value<y.value;
    }
};
priority_queue<complex> q;
void init(){
    while(!q.empty()) q.pop();
}
void getnum(string x,int& a,int& b){
    int one=x.find('+');
    int two=x.find('i');
    a=0;
    for(int i=0;i<one;i++){
        a=a*10+x[i]-'0';
    }
    b=0;
    for(int i=two+1;i<x.length();i++){
        b=b*10+x[i]-'0';
    }
}
int main() {
    int n;
    while(cin>>n){
        init();
        for(int i=0;i<n;i++){
            string x;
            cin>>x;
            if(x=="Pop"){
                if(q.empty()) cout<<"empty"<<endl;
                else{
                    complex t=q.top();
                    cout<<t.real<<"+i"<<t.hypo<<endl;
                    q.pop();
                    cout<<"SIZE = "<<q.size()<<endl;
                }
            }
            else if(x=="Insert"){
                string in;
                cin>>in;
                int a,b;
                getnum(in,a,b);
                q.push(complex(a,b)); 
                cout<<"SIZE = "<<q.size()<<endl;
            }
            else;
        }
    }
}