温馨提示:请注意你代码的时间常数。
定义一个字符串 s 的子串 s[l,r] 为,依次拼接 sl,sl+1,⋯,sr 而形成的字符串,其中下标从 1 开始标号。
定义一个字符串 s 是广义回文的,当且仅当它能被表示为 s=t1+t2+⋯+tk,其中 ti 为任意非空字符串,k 为 ≥2 的正整数,且满足对于任意 1≤i≤k,有 ti=tk+1−i。
例如,字符串 abcbacab
是广义回文的,因为它可以被表示为 ab+c+ba+c+ab
。
给定一个长为 n,只包含前 m 个小写字母的字符串 s。你要处理 q 次查询:
给定 l,r,问 s[l,r] 有多少个子串,满足它是广义回文的。
由于出题人懒得造有强度的数据,因此字符串 s 随机生成。具体的,每个位置上的字符均在前 m 个小写字母中等概率随机选取。
输入格式
本题有多组数据。第一行一个正整数 T(1≤T≤103)表示数据组数。
对于每组测试数据:
第一行输入三个正整数 n,m,q(1≤n≤2⋅105,1≤m≤26,1≤q≤2⋅105)。
第二行输入字符串 s。
接下来 q 行,每行两个正整数 l,r(1≤l≤r≤n)表示一个询问。
保证 ∑n≤2⋅106,∑q≤2⋅106。
输出格式
为了减少输出量,对于每组数据,记第 i 次询问的答案为 ansi,输出 ⨁1≤i≤qi⋅ansi,其中 ⊕ 表示按位异或。
样例
输入
1
8 3 2
abcbacab
1 8
2 6
输出
12