游戏厅里每天玩游戏的玩家都排成了长长的队,贪心的老板为了挣到更多的钱,他定下了如下规定:
(1)任何一个玩家玩的时间均为T分钟;
(2)排队根据玩家玩一次愿意付出的钱数排序,即玩家愿意付出的费用越高,就越排在队列前面;
(3)排队的玩家随时可以增加费用以获得更高的优先权;
(4)队列中随时可以插入新的玩家,排列顺序按玩家愿付出的费用排序。
请你为游戏厅老板编程实现上述功能。
第一行为一个整数n,表示初始时有n个玩家排队。第二行为n个整数,表示这n个玩家愿意付出的钱数。
随后的每一行为一个操作,分别为:
(1)输入1,则输出当前排在队列最前面的玩家付出的钱数。
(2)输入2,输出当前排在队列最前面的玩家付出的钱数后,该玩家出列。
(3)输入3 i v,其中i和v为整数,表示将排在队列中第i+1个玩家的钱数改为v,如果v的钱数不超过该玩家原先的钱数,则输出-1,且不改变该玩家的钱数。
(4)输入4 v,表示插入新的玩家,新的玩家付出的费用为v。
(5)输入0,程序结束。
按操作的要求输出相应的值。
5 1 2 3 4 5 1 2 3 2 10 1 4 6 3 3 1 2 2 2 2 0
5 5 10 -1 10 6 4 3
1 \le n \le 1e5,操作次数不超过 1e5,值域为 1e9