星纹共鸣:古代遗迹的考察
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 64 M,其他语言128 M
64bit IO Format: %lld

题目描述

\hspace{15pt}在一次针对古代遗迹的考察中,awdec 发现了一台古老的“星纹拼接机”。这台机器能够通过组合不同的字符碎片,合成出具有特殊能量的星纹长卷。
\hspace{15pt}与此同时,同行的 Exusiai1 破译了一份被称为“星纹密钥”的古老卷轴。当拼接机合成出的星纹长卷中蕴含了“星纹密钥”的片段时,两者之间就会产生“共鸣”。
\hspace{15pt}为了最大化共鸣产生的能量,awdec 和 Exusiai1 决定联手进行一次完美的拼接操作。
\hspace{15pt}星纹拼接机的合成工作共分为 n 轮。初始时,存在一个空的星纹长卷 S(即空串)。
\hspace{15pt}在第 i 轮工作中,机器会提供两个备选的字符碎片 a_ib_i。awdec 必须且只能从中选择一个,将其直接拼接在当前长卷 S 的末尾。经过 n 轮选择后,将得到最终的星纹长卷 S
\hspace{15pt}Exusiai1 提供的“星纹密钥”是一个字符串 P。他们定义最终长卷 S 的共鸣强度为:P 的每一个前缀S 中作为子串出现的次数之和。
\hspace{15pt}awdec 想知道:
\hspace{23pt} \bullet 通过合理规划每一轮的选择,最终星纹长卷 S 的共鸣强度最大能达到多少?
\hspace{23pt} \bullet 在保证共鸣强度达到最大的前提下,共有多少种不同的选择方案?(注意:即使在某一步中 a_ib_i 是两个完全相同的字符碎片(即 a_i = b_i),选择 a_i 和选择 b_i 依然被视为两种不同的方案。)
\hspace{15pt}最终的方案数可能很大,请对 998244353 取模后输出。所有给定的字符串均只包含小写英文字母。

【名词解释】
\hspace{15pt}字符串的前缀:从字符串的第一个字符开始,向后连续取若干个字符得到的字符串。更具体地,字符串 si 个字符构成的字符串被称为 s 的第 i 个前缀,也记为 s[1..i]
\hspace{15pt}子串:从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\le T\le 100\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行包含一个整数 n\left(1\le n\le 2\times 10^5\right),表示拼接的轮数。
\hspace{15pt}第二行包含一个字符串 P\left(1\le \left|P\right|\le 100\right),表示 Exusiai1 提供的星纹密钥。
\hspace{15pt}接下来 n 行,第 i 行包含两个字符串 a_i\left(1\le \left|a_i\right|\le 2\times 10^5\right)b_i\left(1\le \left|b_i\right|\le 2\times 10^5\right),表示第 i 轮提供的两个备选字符碎片,中间以一个空格隔开。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和、\left|a_i\right| 之和、\left|b_i\right| 之和均不超过 2\times 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,在一行上输出两个整数,分别表示最大共鸣强度以及达到该最大值的方案数对 998244353 取模后的结果,两个整数之间以一个空格隔开。
示例1

输入

复制
3
2
abc
a x
bc a
1
a
a a
3
aba
a ab
ba a
a ba

输出

复制
3 1
1 2
7 2

说明

\hspace{15pt}对于第一组测试数据:
\hspace{15pt}P = \texttt{abc},它的前缀共有三个:\texttt{a}, \texttt{ab}, \texttt{abc}
\hspace{15pt}唯一能达到最大共鸣强度的方案是:第一轮选择 a_1 = \texttt{a},第二轮选择 a_2 = \texttt{bc}。拼接得到的最终长卷 S = \texttt{abc}
\hspace{15pt}S 中,前缀 \texttt{a} 出现了 1 次,前缀 \texttt{ab} 出现了 1 次,前缀 \texttt{abc} 出现了 1 次。总共鸣强度为 1 + 1 + 1 = 3,方案数为 1

\hspace{15pt}对于第二组测试数据:
\hspace{15pt}P = \texttt{a},前缀只有 \texttt{a}
\hspace{15pt}第一轮提供的碎片 a_1 = \texttt{a}, b_1 = \texttt{a}。选择 a_1 得到 S = \texttt{a},共鸣强度为 1,选择 b_1 得到 S = \texttt{a},共鸣强度也为 1
\hspace{15pt}由于选择 a_1 和选择 b_1 视为不同方案,因此最大共鸣强度为 1,方案数为 2

\hspace{15pt}对于第三组测试数据:
\hspace{15pt}P = \texttt{aba},它的前缀有:\texttt{a}, \texttt{ab}, \texttt{aba}
\hspace{15pt}能达到最大共鸣强度的方案有两种:
\hspace{15pt}方案一:选择 a_1=\texttt{a}a_2=\texttt{ba}b_3=\texttt{ba},拼接得到 \texttt{ababa}
\hspace{15pt}方案二:选择 b_1=\texttt{ab}b_2=\texttt{a}b_3=\texttt{ba},拼接得到 \texttt{ababa}
\hspace{15pt}在串 \texttt{ababa} 中:
\hspace{23pt}\bullet 前缀 \texttt{a} 出现在位置 1, 3, 5,共 3 次。
\hspace{23pt}\bullet 前缀 \texttt{ab} 出现在位置 1, 3,共 2 次。
\hspace{23pt}\bullet 前缀 \texttt{aba} 出现在位置 1, 3,共 2 次。
\hspace{15pt}总共鸣强度为 3 + 2 + 2 = 7。共有 2 种方案可以得到该串。

备注:

\hspace{15pt}在大部分情况下,PyPy 的运行速度优于 Python。本题我们建议您选择对应版本的 PyPy 进行提交、而不是 Python。