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()