题目描述
干扰器上的问题升级了,干扰器需要烛龙战队建立一个空的序列,对这个序列将有四种操作,每种操作用参数op表示种类。
op=1 时,会再给一个参数 m,烛龙战队要向序列插入 m 这个元素。
op=2 时,需要删除序列中最早插入的元素。
op=3 时,需要删除序列中数值最大的元素如果有若干个元素都满足值最大这个要求,要删除的元素就是最早被插入的元素。
op=4时,需要在一行中输出序列中所有元素。
一共有n次操作,烛龙战队需要设计一个程序完成上面的需求。
输入
输入包括若干行。
第一行包含一个整数n,代表共有n次操作。(1 <= n <= 5 * 10 ^5)
接下来你要构造程序,实现下面三种操作,每个操作首先用参数 op 表示种类,具体的:
op=1 时,再给定一个参数 m,你要向序列插入 m 这个元素。
op=2 时,删除序列中最早插入的元素。
op=3 时,删除序列中数值最大的元素,特别的,如果有若干个元素都满足值最大这个要求,要删除的元素是最早被插入的元素。
op=4时,需要在一行中输出序列中所有元素。
(1 ≤ m ≤ 5 × 10^5, 1 ≤ op ≤ 4)
输出
对于每个类型为4的查询,按顺序输出序列中内容。
样例输入
5
1 1
1 2
1 3
2
4
样例输出
2 3