Rapid City Dynamics 公司以其狗型机器人、猎豹型机器人甚至人形机器人而闻名。但大项目需要大投入,因此他们决定制造一些更简单但更受欢迎(且易于销售!)的产品。现在,该公司正在研发一种名为 Rat-O-Matic 的新机器人,而作为 Rapid City Dynamics 的员工,你将参与其中!
机器人本身是一只机械鼠,它可以在平面上移动,并通过触碰放置在平面上的特殊框架来产生旋律。你可以假设平面在所有方向上都是无限的,并且上面有一个笛卡尔坐标系。平面上恰好有 $n$ 个框架。每个框架由三个整数 $x, y$ 和 $r$ 描述。它由以点 $(x, y)$ 为中心的两个轴对齐的正方形所围成的区域组成:第一个正方形的半径为 $r$,第二个正方形的半径为 $2r$。正方形的半径是指从其中心到其边的距离。此外,每个框架都有一个关联的声音。目前只有三种可能的声音,我们将其记为 “r”、“a” 和 “t”。保证没有任何两个框架相交或接触。
可以通过在特殊键盘上输入框架编号(框架从 1 开始编号)来与机器人交互。最初,机器鼠位于所有框架之外。收到指令后,机器鼠开始向指定的框架移动。得益于其专利导航系统,机器人会选择一条穿过其他框架数量最少的路径。当触碰到一个框架时,它会产生一个关联的声音,因此机器鼠在移动过程中会生成一段旋律。机器人在触碰到指定框架后停止。
众所周知,人们喜欢熟悉的旋律。你的数据库中有 $m$ 段旋律。每段旋律由一串编码声音的字符描述。当且仅当机器鼠生成的旋律是数据库中某段旋律的子串(连续子序列)时,我们称生成的旋律包含在数据库的旋律中。生成旋律的流行度是指数据库中包含该生成旋律的旋律数量。注意,即使数据库中某些旋律相同,它们也必须分别计算。
为了创造最有趣的框架布局,你进行了 $q$ 次实验。每次实验属于以下类型之一:
- 停用编号为 $x$ 的框架。保证该框架当前处于活动状态。停用的框架不会产生任何声音。最初,所有框架都是活动的。
- 激活编号为 $x$ 的框架。保证该框架当前处于停用状态。
- 计算机器鼠从所有框架之外向编号为 $x$ 的框架移动时所生成的旋律的流行度。保证该框架此时处于活动状态。
请使用你的计算机模拟所有实验!
输入格式
第一行包含一个整数 $n$,表示框架的数量 ($1 \le n \le 2 \cdot 10^5$)。接下来的 $n$ 行描述框架,第 $i$ 行包含以空格分隔的整数 $x_i, y_i, r_i$ 和一个字符 $c_i$ ($-10^8 \le x_i, y_i \le 10^8$, $1 \le r_i \le 10^8$, 且 $c_i$ 为 “r”、“a” 或 “t”)。这些分别是框架中心的坐标、内正方形的半径以及关联的声音。
下一行包含一个整数 $m$,表示数据库中旋律的数量 ($1 \le m \le 2 \cdot 10^5$)。接下来的 $m$ 行包含表示旋律的字符串。每个字符串非空,且由字符 “r”、“a” 和 “t” 组成。所有字符串的总长度不超过 $2 \cdot 10^5$。
下一行包含一个整数 $q$,表示实验的数量 ($1 \le q \le 2 \cdot 10^5$)。接下来的 $q$ 行描述实验,第 $j$ 行包含一个字符 $t_j$ (“-”、“+” 或 “?”) 和一个整数 $x_j$,中间以空格分隔。字符编码了实验类型(“-” 为 1,“+” 为 2,“?” 为 3),整数是框架的编号。
保证至少存在一个第三类型的实验。
输出格式
对于每个第三类型的实验,输出一行,包含一个整数,即生成旋律的流行度。
样例
输入 1
3 3 3 4 r 2 4 1 a 14 4 1 t 3 rat rara aaa 6 ? 3 ? 2 - 1 ? 2 + 1 ? 2
输出 1
1 2 3 2