4128: qko 的栈

时间限制:1000 ms 内存限制:128 MB
上传者:
提交:2 通过:2

题目描述

优秀的 qko 写的栈都比普通栈优秀,他的栈可以支持以下功能:
• 入栈一个元素
• 出栈一个元素
• 查询栈中最小的元素以及栈顶的元素
现在他要你也来实现这个栈!

输入格式

第 1 行,一个正整数 N,表示需要执行的操作的数量有 N 个;
以下 N 行,每一行表示形式为 op [arg],其中 [arg] 仅在 op = 1 条件下才出现:
• op = 1 ,表示入栈的元素为 arg
• op = 2 ,表示出栈一个元素
• op = 3 ,表示询问当前栈中最小的元素以及栈顶元素
0 ≤ arg ≤ 109, 1 ≤ N ≤ 3 ∗ 106

输出格式

对于每个 op = 3 的查询,输出一行两个数,先输出栈中最小的元素,再输出栈顶元素,两个数以空格分隔。


注意操作 2 与操作 3 不保证 每次栈符合操作 2 和 3 的要求,这时候请输出gg!,并不做任何操作。

输入样例 复制

8
1 23
1 234
1 2
32223

输出样例 复制

2 2
gg!