本题 C/C++ 时限 2.5 秒,Pascal 时限 5 秒。最后将改时限重测所有 Pascal 提交。
不知道大家有没有听过物凄系列的一首歌,帕秋莉用卡车给博丽老板运货的故事。
又一次,卡车司机帕秋莉被拜托。红魔馆之主蕾米莉亚喜欢喝红茶,一天她要求帕秋莉开卡车帮她运红茶过来。
红茶其实是编好号了的,每个红茶都用一个非负整数来编号,从 000 开始一直到正无穷。帕秋莉请来好朋友魔理沙,帮她一起运红茶。
一开始卡车上已经有了编号为 000 到 aaa 的红茶(注意 a=−1a=-1a=−1 就表示初始卡车上没有任何红茶),然后接下来到红魔馆的路上有 mmm 个时刻,每个时刻都会发生一种事件。
- 第一种事件,帕秋莉到了一个红茶店,买了一个编号为 xxx 的红茶(卡车上初始没有这种编号的红茶,之前也不会买过相同编号的红茶)。
- 第二种事件,一个目前在卡车上的编号为 xxx 的红茶飞出了卡车。
- 第三种事件,魔理沙把目前不在卡车上的最早飞出去的红茶捡回了卡车上(如果一个红茶曾经飞出去被捡回来过然后再飞出去,这里认为其飞出去的时间为最近一次飞出去的时间)。
由于描述这些事件实在是太麻烦了,聪明的魔理沙用了一个长度为 mmm 的整数序列 ppp 来描述每个时刻发生的事件。
- 这个序列 ppp 里所有元素均为 [−1,b)[-1,b)[−1,b) 的整数。
- 若 pi=−1p_i=-1pi=−1 则表示时刻 iii 发生了第三种事件,如果此时并不存在满足条件的飞出去的红茶,则代表魔理沙脑子没转过来,忽视此次事件。
- 否则,如果在时刻 iii 编号为 pip_ipi 的红茶初始不在卡车上也从来没有通过第一种事件买过,则表示时刻 iii 发生了一个买编号为 pip_ipi 的红茶的第一种事件。
- 否则,如果在时刻 iii 编号为 pip_ipi 的红茶在卡车上,则表示时刻 iii 发生了一个编号为 pip_ipi 的红茶飞出卡车的第二种事件。
- 否则,表示时刻 iii 发生了第三种事件,如果此时并不存在满足条件的飞出去的红茶,则忽视此次事件。
如果某个时刻的事件被忽视,那么我们不执行对应的操作,也不计算此时的答案。
帕秋莉是一个勤奋的人,每个时刻过后,如果这个时刻 iii 发生了事件(如果一个时刻发生的事件被忽视了,就不认为这个时刻发生了事件),令 ansians_iansi 表示时刻 iii 过后卡车上所有编号小于 ansians_iansi 的红茶都出现了,而编号为 ansians_iansi 的红茶没有出现(很显然这个值是唯一的)。当然如果时刻 iii 没有发生事件,则令 ansi=0ans_i=0ansi=0 。
请你对于 1≤i≤m1 \leq i \leq m1≤i≤m 计算出 ansi×(i2+7i) mod 998244353ans_i\times (i^2+7i)\ mod\ 998244353ansi×(i2+7i) mod 998244353 的异或和。