#HD202510I. PalindromemordnilaP

PalindromemordnilaP

温馨提示:请注意你代码的时间常数。

定义一个字符串 ss 的子串 s[l,r]s[l,r] 为,依次拼接 sl,sl+1,,srs_l,s_{l+1},\cdots,s_r 而形成的字符串,其中下标从 11 开始标号。

定义一个字符串 ss 是广义回文的,当且仅当它能被表示为 s=t1+t2++tks=t_1+t_2+\cdots+t_k,其中 tit_i 为任意非空字符串,kk2\geq 2 的正整数,且满足对于任意 1ik1\leq i\leq k,有 ti=tk+1it_i=t_{k+1-i}

例如,字符串 abcbacab 是广义回文的,因为它可以被表示为 ab+c+ba+c+ab

给定一个长为 nn,只包含前 mm 个小写字母的字符串 ss。你要处理 qq 次查询:

给定 l,rl,r,问 s[l,r]s[l,r] 有多少个子串,满足它是广义回文的。
由于出题人懒得造有强度的数据,因此字符串 ss 随机生成。具体的,每个位置上的字符均在前 mm 个小写字母中等概率随机选取。

输入格式

本题有多组数据。第一行一个正整数 TT1T1031\leq T\leq 10^3)表示数据组数。

对于每组测试数据:

第一行输入三个正整数 n,m,qn,m,q1n21051\leq n\leq 2\cdot 10^51m261\leq m\leq 261q21051\leq q\leq 2\cdot 10^5)。

第二行输入字符串 ss

接下来 qq 行,每行两个正整数 l,rl,r1lrn1\leq l\leq r\leq n)表示一个询问。

保证 n2106\sum n\leq 2\cdot 10^6q2106\sum q\leq 2\cdot 10^6

输出格式

为了减少输出量,对于每组数据,记第 ii 次询问的答案为 ansians_i,输出 1iqiansi\bigoplus_{1\leq i\leq q} i\cdot ans_i,其中 \oplus 表示按位异或。

样例

输入

1
8 3 2
abcbacab
1 8
2 6

输出

12