// 模相等的输出b较小的复数。。。
#include<stdio.h>
#include<string.h>#include<algorithm>
using namespace std;
struct Node{
int a; // 实部
int b; // 虚部
int m; // 模
}f[1001];
bool cmp(Node a,Node b){ // 对模从大到小排序
if(a.m!=b.m) return a.m>b.m;
else return a.b<b.b;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
int size=0;
while(n--){
char s[100];
scanf("%s",s);
if(s[0]=='P'){
if(size==0) printf("empty\n");
else{
sort(f,f+size,cmp);
printf("%d+i%d\n",f[0].a,f[0].b);
for(int i=0;i<size-1;i++) f[i]=f[i+1]; // 将输出的删除。。。
size--;
printf("SIZE = %d\n",size);
}
}else if(s[0]=='I'){
scanf("%d+i%d",&f[size].a,&f[size].b);
f[size].m=f[size].a*f[size].a+f[size].b*f[size].b;
size++;
printf("SIZE = %d\n",size);
}
}
}
return 0;
}