#P7091. 重叠的子串

重叠的子串

Problem Description

给定一个只含小写字母的字符串 $s$ 和 $q$ 次询问,每次询问给定一个字符串,以 $s[l .. r]$ 的形式给出,判断 $s$ 中是否存在两个或多个出现的有重叠部分的给定子串。比如在 “ababa” 中,两个 “aba” 子串就重叠于中间的字母 “a”,而两个 “ab” 子串就没有发生重叠。$T$ 组数据。

Input

第一行一个正整数 $T(1\le T \le 20)$,表示数据组数。

对于每组数据:

第一行两个整数 $n,q\,(1\le n \le 10^5, 1\le q \le 10^6)$,表示给定字符串的长度及询问个数。

第二行一个长度为 $n$,且只包含小写字母的字符串 $s$。

接下来 $q$ 行,每行两个整数 $l,r\,(1\le l \le r \le n)$,表示一次询问。

保证所有数据的 $\sum n \le 6\times 10^5, \sum q \le 3\times 10^6$。

Output

对于每组数据:

输出共 $q$ 行,每行一个字符串 “Yes” 或者 “No”(均不含引号),分别表示存在以及不存在有重叠部分的多个子串 $s[l .. r]$。

2 10 3 georgeorge 1 5 1 4 5 10 18 5 huaweihuaweihuawei 1 2 3 6 7 11 12 18 1 18
Yes No Yes No No No Yes No