3300 - 堆(模板)

给定一个数列,初始为空,请支持下面三种操作:
给定一个整数x,请将x加入到数列中。
输出数列中最小的数。
删除数列中最小的数(如果有多个数最小,只删除1个)。

输入

第一行是一个整数,表示操作的次数n。 接下来n行,每行表示一次操作。每行首先有一个整数op表示操作类型。
若op=1,则后面有一个整数x,表示要将x加入数列。
若op=2,则表示要求输出数列中的最小数。若数列为空,输出0。
若op=3,则表示删除数列中的最小数。如果有多个数最小,只删除1个。

输出

对于每个操作2,输出一行一个整数表示答案。

样例

输入

5
1 2
1 5
2
3
2

输出

2
5

提示

对于 100% 的数据,保证 1≤n≤10^6,1≤x<2^31,op∈{1,2,3}。

时间限制 2 秒
内存限制 512 MB
讨论 统计
上一题 下一题