#P2174. 小Z的神奇数列

小Z的神奇数列

题目背景

小Z最近在研究数列,他需要知道在他所研究的数列中,最大的数是多少(Max),最小的数是多少(Min),最大的数的最小的数次幂是多少(Max^Min),所有数的乘积是多少。要知道,这样的问题是肯定难不倒小Z的。但是,最近小Z突发奇想,想要研究下这个数列的更深层的性质,所以他决定不断的从这个数列中删去一些数,每次删除后都研究下当前数列。由于数列项数很大,这给小Z带来了很大的麻烦,于是小Z请你帮他写一个程序,来完成下列操作。

题目描述

你需要维护一个可重集,支持五种操作:

  • D x 表示删除 xx,保证 xx 一定存在。若有多个只用删除一个。

  • B 询问集合中最大值。

  • S 询问集合中最小值。

  • M 设集合中最大值为 aa,最小值为 bb,询问 abmod317847191a^b \bmod 317847191

  • T 询问数列中所有数的乘积,对 317847191317847191 取模。

对于所有询问保证集合非空。

输入格式

第一行两个正整数 n,mn,m,表示初始集合大小和操作数。
第二行 nn 个正整数 aia_i,表示初始集合。
接下来 mm 行,每行表示一个操作。

输出格式

对于每个询问,输出一行一个整数表示答案。

3 6
2 6 9
M
D 9
B
S
M
T
81
6
2
36
12

提示

【数据规模】
对于部分数据,1n10001 \le n \le 10001m1001\le m \le 1001ai4001\le a_i \le 400
对于 100%100\% 的数据,1n,m1061\le n,m \le 10^61ai1081\le a_i \le 10^8