#DX0030. 字符串

字符串

题目描述

给定由 a, b 两种小写字母组成的串 ss, 下标从 11 开始。

定义 occ(t)occ(t) 表示字符串 ttss 中出现的次数。

qq 次询问,每次询问有如下两种类型:

  1. 操作 11,给定 l,rl,r,询问有多少本质不同的串 tt,满足 s[l,r]s[l,r]tt 的子串,且 occ(s[l,r])=occ(t)occ(s[l,r])=occ(t)

  2. 操作 22,给定 l,rl,r,询问有多少本质不同的串 tt,满足 tts[l,r]s[l,r] 的子串,且 occ(s[l,r])=occ(t)occ(s[l,r])=occ(t)

输入格式

第一行一个整数 TT (1T51≤T≤5) 代表数据组数。

对于每组数据:

第一行输入一个串 ss (1s5×1051≤|s|≤5×10^5) 。

第二行一个整数 qq (1q5×1051≤q≤5×10^5) 表示有 qq 次询问。

接下来 qq 行每行三个数 op,l0,r0op,l_0,r_0 (op{1,2},1l0,r0sop∈ \{1,2\},1≤l_0,r_0≤|s|),分别表示询问的类型和询问的区间 [l,r][l,r]

其中 l=(l0+lastans1)%s+1,r=(r0+lastans1)%s+1l=(l_0+lastans−1)\%|s|+1,r=(r_0+lastans−1)\%|s|+1,保证 1lrs1≤l≤r≤|s|

lastanslastans 代表上一次询问的答案,特别的对于每组数据的第一次询问时 lastans=0lastans=0

保证所有测试数据 s5×105,q5×105∑|s|≤5×10^5,∑q≤5×10^5

输出格式

对于每组数据输出 qq 行,每行一个整数表示每个询问的答案。

输入样例

1
ababbab
10
2 1 3
2 2 3
1 7 1
2 2 5
2 1 1
1 2 4
2 1 3
2 6 3
2 4 4
1 7 1

输出样例

1
2
2
3
1
9
2
6
1
1