#ZF1180. RYC自动机-hard

RYC自动机-hard

Description

注:easy版本和hard版本本质是不同的问题,无法直接用hard版本的解法通过easy版本。

你已经成功帮助小任解决了老师的审问,小任看到你写的程序,决定把它保存起来,以备后患之忧。

但是他还想要你帮它的功能增强一下,以便对付日后更为复杂的审问。

如果 x,yx,y 为两个字符串,字符串 yyxx 每一位最大可以匹配的前缀长度的之和称为 xx 意义下 yy 的价值。

例如 x="abacd",y="abc"x="abacd",y="abc"

xx 的第一位最多可以匹配 22 位,即:abacd\textbf{ab}acd

xx 的第三位最多可以匹配 11 位,即:abacdab \textbf{a} cd

在其余位置,均只能匹配 00 位。

所以在 xx 意义下, yy 的价值等于 1+2=31+2=3

了解了这些之后,小任会给你一个长度为 nn 的字符串 ss,一个长度为 mm 的字符串 tt,和 qq 次询问。

每次询问小任会要求你计算出字符串 tt 的一个从下标 ll 开始到下标 rr 结束的连续子串(字符串 tt 的下标从 11 开始),在 ss 意义下价值。

小任决定把能够解决这种问题的机器叫做 "RYC自动机"。

Format

Input

第一行给出三个正整数 n,m,qn,m,q,其中 1n,m,q3×1051\leq n,m,q \leq 3\times 10^5,分别表示字符串 ss 的长度,字符串 tt 的长度和老师询问的次数。

第二行给出一个长度为 nn 的均由小写字母组成的字符串 ss,表示小任整理出来的字符串。

第三行给出一个长度为 mm 的均由小写字母组成的字符串 tt, 表示老师整理出来的字符串。

接下来 qq 行每行包含两个整数 l,rl,r,其中 1lrm1\leq l \leq r \leq m,表示老师询问的子串在字符串 tt 中的下标范围。

Output

一共输出 qq 行,每行输出一个整数,表示询问子串在字符串 ss 意义下的价值。

Samples

5 5 3
abssa
dasab
1 1
2 3
3 4
0
2
3

Limitation

4s, 1024KiB for each test case.