【模板】栈
题目描述
请你实现一个栈(stack),支持如下操作:
- `push(x)`:向栈中加入一个数 $x$。
- `pop()`:将栈顶弹出。如果此时栈为空则不进行弹出操作,输出 `Empty`。
- `query()`:输出栈顶元素,如果此时栈为空则输出 `Anguei!`。
- `size()`:输出此时栈内元素个数。
输入输出格式
输入格式
**本题单测试点内有多组数据**。
输入第一行是一个整数 $T$,表示数据组数。对于每组数据,格式如下:
每组数据第一行是一个整数,表示操作的次数 $n$。
接下来 $n$ 行,每行首先由一个字符串,为 `push`,`pop`,`query` 和 `size` 之一。若为 `push`,则其后有一个整数 $x$,表示要被加入的数,$x$ 和字符串之间用空格隔开;若不是 `push`,则本行没有其它内容。
输出格式
对于每组数据,按照「题目描述」中的要求依次输出。每次输出占一行。
输入输出样例
输入样例 #1
2
5
push 2
query
size
pop
query
3
pop
query
size
输出样例 #1
2
1
Anguei!
Empty
Anguei!
0
说明
### 样例 1 解释
对于第二组数据,始终为空,所以 `pop` 和 `query` 均需要输出对应字符串。栈的 size 为 0。
### 数据规模与约定
对于全部的测试点,保证 $1 \leq T, n\leq 10^6$,且单个测试点内的 $n$ 之和不超过 $10^6$,即 $\sum n \leq 10^6$。保证 $0 \leq x \lt 2^{64}$。
### 提示
- 请注意大量数据读入对程序效率造成的影响。
- 因为一开始数据造错了,请注意输出的 `Empty` 不含叹号,`Anguei!` 含有叹号。