#18251. 云顶之弈

云顶之弈

题目背景

小明喜欢玩游戏!

小明喜欢出题!

题目描述

小明已经很久没有游戏玩了,但是小明又需要从游戏里找 idea,所以他只能回忆一下自己曾经玩过的一款游戏,叫做“云顶之弈“。

今天小明想把这个游戏简化成一个收集卡牌类的游戏,规则是这样的:

给你一个长度为 nn 的牌的序列,第 ii 张牌要么是 A,要么是 a

小明可以做如下三种操作之一无数次:

(1)从序列中删除一张卡牌;

(2)选取三个连续的一级牌合成一张二级牌,或选取两个连续的二级牌合成一张三级牌。

具体地:三个 A 可以合成一个 B,两个 B 可以合成一个 CC 就不能继续合成了,因为最高只有 33 级的牌。

同理,三个 a 可以合成一个 b,两个 b 可以合成一个 cc 以上不能继续合成。

合成之后,之前的牌从序列里消失,合成后的牌出现在序列这个位置。

例如你一开始有 AAaAAAAaaaAa,你可以删除第一个 a 以及最后一个 A,得到 AAAAAAaaaa,然后合成 Cab

每一张卡牌都有一个价值,卡牌 ABCabc 的价值分别是 A,B,C,a,b,cA,B,C,a,b,c

已知小明一开始有 nn 个序列,每个序列初始从左到右有哪些卡牌是已知的。

你需要完成如下操作 QQ 次,每次操作可能是:

1 u c,在第uu个序列的末尾添加一张字符为 cc 的卡牌,此处 ccaA

2 u,从第 uu 个序列的末尾删除最后一张牌,如果 uu 本来是空的,则无任何影响。

3 u v,把第 vv 个序列合并到第 uu 个序列的末尾,然后清空第 vv 个序列。

4 u,查询如果拿第 uu 个序列来玩游戏的话,操作的方案数与所有情况下的卡牌价值总和是多少。输出答案对 998244353998244353 取模的结果。

我们称两个操作方案不同,当且仅当删除掉的牌编号不同,或存在一个 ii,使得最后两个操作结果从左到右第 ii 张牌种类不同。

输入格式

第一行输入 n,Q,A,B,C,a,b,cn,Q,A,B,C,a,b,c

接下来 nn 行,第 ii 行首先输入 kik_i,表示第 ii 个序列的长度,然后输入一个长度为 kik_i 的字符串,每个位置是 a 或者 A

接下来 QQ 行,输入格式如上述格式。

输出格式

对于每个操作 44,输出一行两个数字表示答案。

输入输出样例

1 9 1 1 1 1 1 1
1 a
4 1
1 1 a
4 1
1 1 a
4 1
1 1 a
4 1
1 1 a
4 1
2 1
4 4
9 13
22 40
55 119

大样例

数据规模与约定

对于 100%100\% 的数据,满足 n105n\le 10^5Q,ki3×105Q,\sum k_i\le 3\times 10^50A,B,C,a,b,c<9982443530\le A,B,C,a,b,c<998244353

测试点编号 nn\le Q,kiQ,\sum k_i\le 特殊性质
131\sim 3 11 10310^3 没有操作 33
454\sim 5 3×1053\times 10^5
686\sim 8 10510^5
9119\sim 11 没有操作 22
121412\sim 14 10310^3 3×1033\times 10^3
151715\sim 17 10410^4 3×1043\times 10^4
182018\sim 20 10510^5 3×1053\times 10^5