小 Z 的栈函数
题目描述
小 Z 最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下 11 个操作:
- $\texttt{NUM} ~x$:栈顶放入 $x$。
- $\texttt{POP}$:抛弃栈顶元素。
- $\texttt{INV}$:将栈顶元素取出,然后放入它的相反数。
- $\texttt{DUP}$:再放入一个和栈顶元素相同的数。
- $\texttt{SWP}$:交换栈顶的两个元素。
- $\texttt{ADD}$:取出栈顶的两个元素,两元素相加,所得结果放入栈内。
- $\texttt{SUB}$:取出栈顶的两个元素,第二个元素减去第一个元素,所得结果放入栈内。
- $\texttt{MUL}$:取出栈顶的两个元素,两元素相乘,所得结果放入栈内。
- $\texttt{DIV}$:取出栈顶的两个元素,第二个元素整除以第一个元素,所得结果放入栈内。
- $\texttt{MOD}$:取出栈顶的两个元素,第二个元素取模以第一个元素,所得结果放入栈内。
- $\texttt{END}$:结束这个程序。
然后,小 Z 用上面的 11 种操作写了一个一元函数 $f(x)$。$x$ 就是放入栈里面第一个初始元素。然后经过这个函数的一系列操作,当函数结束的时候,正常情况下,栈里面会有唯一的一个元素。剩下的这个元素就作为函数 $f(x)$ 的返回值。
小 Z 有 $n$ 个询问,询问每个值 $x$ 经过上述函数所映射出的 $f(x)$ 是多少。但是这个由于机器太老了,跑起东西来太慢了,小 Z 又是一个急性子,所以请你们写一个程序,来帮助小 Z 计算他查询的 $f(x)$。
还有,由于这台机器太破了,所以如果运算过程中有数字的绝对值大于 $1000000000$,机器将产生故障。
输入输出格式
输入格式
输入首先有若干行,仅包含上述 11 个操作,用来描述函数 $f(x)$ 的操作,函数的结束保证以 $\texttt{END}$ 结尾.
接下来有一个整数,表示询问的个数 $n$。
接下来 $n$ 行,每行一个整数 $x$,表示询问 $f(x)$ 的值。
**输入数据不保证合法**。
输出格式
输出 $n$ 行,每行表示一个询问的结果。按如下规则输出:
- 如果最后栈内不是一个元素,输出 `ERROR`。
- 如果运算过程中有数字的绝对值大于 $1000000000$,输出 `ERROR`。
- 如果输入数据不合法,导致中途退出,输出 `ERROR`。
- 否则输出对应的 $f(x)$。
输入输出样例
输入样例 #1
NUM 600000000
ADD
END
3
0
600000000
1
输出样例 #1
600000000
ERROR
600000001
说明
### 数据规模与约定
对于全部测试点,保证函数的操作步数不超过 $2000$,$1 \leq n \leq 2000$,$|x| \leq 10^{9}$。