import re
import bisect
sort_list = list()

def insertValue(x):
    # TODO: 实现插入逻辑
    bisect.insort_left(sort_list,x)

def eraseValue(x):
    # TODO: 实现删除逻辑
    idx = bisect.bisect_left(sort_list,x)
    if idx<len(sort_list) and sort_list[idx]==x:
        sort_list.pop(idx)


def xCount(x):
    # TODO: 求x在集合中的个数
    lx = bisect.bisect_left(sort_list,x)
    rx = bisect.bisect_right(sort_list,x)
    return rx-lx

def sizeOfSet():
    # TODO: 返回集合大小
    return len(sort_list)

def getPre(x):
    # TODO: 实现找前驱
    # bisect_left找列表中「第一个大于或等于 x」的元素的索引;
    #所以-1才为前驱
    lx = bisect.bisect_left(sort_list,x)
    if lx>0:
        return sort_list[lx-1]    
    else:
        return-1
def getBack(x):
    # TODO: 实现找后继
    #bisect_right找 列表中「第一个大于 x」的元素的索引;
    #不用-1
    rx = bisect.bisect_right(sort_list,x)
    if rx<len(sort_list):
        return sort_list[rx]
    else:
        return -1
def main():
    q = int(input())
    for _ in range(q):
        line = map(int,input().split())
        cnt,op,x=0,0,0
        for i in line:
            if(cnt==0):
                op=i
            else:
                x=i
            cnt+=1
        
        if op == 1:
            insertValue(x)
        elif op == 2:
            eraseValue(x)
        elif op == 3:
            print(xCount(x))
        elif op == 4:
            print(sizeOfSet())
        elif op == 5:
            print(getPre(x))
        elif op == 6:
            print(getBack(x))

if __name__ == "__main__":
    main()