#P5287. [HNOI2019] JOJO

[HNOI2019] JOJO

背景

JOJO 的奇幻冒险是一部非常火的漫画。漫画中的男主角经常喜欢连续喊很多的 “欧拉” 或者 “木大”。

题目描述

为了防止字太多挡住漫画内容,现在打算在新的漫画中用 xx 欧拉或者 xx 木大表示有 xx 个欧拉或者木大。

为了简化内容我们现在用字母表示喊出的话。

我们用数字和字母来表示一个串,例如 2 a 3 b 表示的串就是 aabbbaabbb。

一开始漫画中什么话都没有,接下来你需要依次实现 nn 个操作,总共只有 22 种操作:

  • 第一种:1 x c 在当前漫画中加入 xx 个 cc,表示在当前串末尾加入 xx 个 cc 字符。保证当前串是空串或者串尾字符不是 cc。
  • 第二种:2 x 觉得漫画没画好将漫画还原到第 xx 次操作以后的样子,表示将串复原到第 xx 次操作后的样子,如果 x=0x=0 则是将串变成空串。

如果当前串是 bbaabbbbbaabbb,第 44 次操作后串是 bbbb,则 2 4 会使 bbaabbbbbaabbb 变成 bbbb,保证 xx 小于当前操作数。

众所周知空条承太郎十分聪明,现在迪奥已经被打败了,他开始考虑自己的漫画中的一些问题:

对于一个串的每个前缀 AA,都有一个最长的比它短的前缀 BB 与前缀 AA 的一个后缀匹配,设这个最长的前缀 BB 的长度为 LL。LL 为 00 时意味着 BB 是一个空串。

每一次操作后,你都需要将当前的串的所有前缀的 LL 求和并对 998244353998244353 取模输出告诉空条承太郎,好和他的白金之星算出的答案对比。

比如 bbaaabbabbaaabba 的 LL 分别是 0,1,0,0,0,1,2,30, 1, 0, 0, 0, 1, 2, 3,所以对于这个串的答案就是 77。

输入格式

第一行包括一个正整数 nn,表示操作数量。

接下来 nn 行每行包含一个操作,操作格式如题面所示,例如

  • 1 x c
  • 2 x

保证数据合法。

输出格式

输出文件仅包含 nn 行,第 ii 行一个整数,表示 ii 个操作之后串的答案。

11
1 2 a
1 3 b
1 2 a
1 1 b
2 2
1 3 a
1 2 b
2 6
2 5
1 7 a
1 5 c

1
1
4
7
1
6
13
6
1
14
14

提示

样例解释

操作 此时的串 答案
11 aa 0+1=10+1=1
22 aabbb 0+1+0+0+0=10+1+0+0+0=1
33 aabbbaa 0+1+0+0+0+1+2=40+1+0+0+0+1+2=4
44 aabbbaab 0+1+0+0+0+1+2+3=70+1+0+0+0+1+2+3=7
55 aabbb 0+1+0+0+0=10+1+0+0+0=1
66 aabbbaaa 0+1+0+0+0+1+2+2=60+1+0+0+0+1+2+2=6
77 aabbbaaabb 0+1+0+0+0+1+2+2+3+4=130+1+0+0+0+1+2+2+3+4=13
88 aabbbaaa 0+1+0+0+0+1+2+2=60+1+0+0+0+1+2+2=6
99 aabbb 0+1+0+0+0=10+1+0+0+0=1
1010 aabbbaaaaaaa 0+1+0+0+0+1+2+2+2+2+2+2=140+1+0+0+0+1+2+2+2+2+2+2=14
1111 aabbbaaaaaaaccccc 0+1+0+0+0+1+2+2+2+2+2+2+0+0+0+0+0=140+1+0+0+0+1+2+2+2+2+2+2+0+0+0+0+0=14

数据范围

20%20\% 的数据满足 n≤300n\leq 300 且每个 11 操作中的 x≤300x\leq 300;

另有 30%30\% 的数据满足 n≤105n\leq 10 ^ 5 且每个 11 操作中的 x=1x=1;

另有 30%30\% 的数据满足 n≤105n\leq 10 ^ 5 且不含 22 操作;

100%100\% 的数据满足 n≤105n\leq 10 ^ 5 且每个 11 操作中的 x≤104x\leq 10 ^ 4。