CF1881G Anya and the Mysterious String

Description

Anya received a string $ s $ of length $ n $ brought from Rome. The string $ s $ consists of lowercase Latin letters and at first glance does not raise any suspicions. An instruction was attached to the string. Start of the instruction. A palindrome is a string that reads the same from left to right and right to left. For example, the strings "anna", "aboba", "level" are palindromes, while the strings "gorilla", "banan", "off" are not. A substring $ [l \ldots r] $ of string $ s $ is a string $ s_l s_{l+1} \ldots s_{r-1} s_r $ . For example, the substring $ [4 \ldots 6] $ of the string "generation" is the string "era". A string is called beautiful if it does not contain a substring of length at least two that is a palindrome. For example, the strings "fox", "abcdef", and "yioy" are beautiful, while the strings "xyxx", "yikjkitrb" are not. When an integer $ x $ is added to the character $ s_i $ , it is replaced $ x $ times with the next character in the alphabet, with "z" being replaced by "a". When an integer $ x $ is added to the substring $ [l, r] $ of string $ s $ , it becomes the string $ s_1 s_2 \ldots s_{l-1} (s_l + x) (s_{l+1} + x) \ldots (s_{r-1} + x) (s_r + x) s_{r+1} \ldots s_n $ . For example, when the substring $ [2, 4] $ of the string "abazaba" is added with the number $ 6 $ , the resulting string is "ahgfaba". End of the instruction. After reading the instruction, Anya resigned herself to the fact that she has to answer $ m $ queries. The queries can be of two types: 1. Add the number $ x $ to the substring $ [l \ldots r] $ of string $ s $ . 2. Determine whether the substring $ [l \ldots r] $ of string $ s $ is beautiful.

Input Format

The first line contains an integer $ t $ ( $ 1 \le t \le 10^4 $ ) - the number of test cases. The descriptions of the test cases follow. The first line of each test case contains two integers $ n $ and $ m $ ( $ 1 \le n, m \le 2 \cdot 10^5 $ ) - the length of the string $ s $ and the number of queries. The second line of each test case contains the string $ s $ of length $ n $ , consisting of lowercase Latin letters. The next $ m $ lines contain the queries: - $ 1 $ $ l $ $ r $ $ x $ ( $ 1 \le l \le r \le n $ , $ 1 \le x \le 10^9 $ ) - description of a query of the first type; - $ 2 $ $ l $ $ r $ ( $ 1 \le l \le r \le n $ ) - description of a query of the second type. It is guaranteed that the sum of $ n $ and the sum of $ m $ over all test cases do not exceed $ 2 \cdot 10^5 $ .

Output Format

For each query of the second type, output "YES" if the substring $ [l \ldots r] $ of string $ s $ is beautiful, otherwise output "NO". You can output "YES" and "NO" in any case (for example, the strings "yEs", "yes", "Yes", and "YES" will be recognized as positive answers).

Explanation/Hint

In the first test case of the first test, the following happens: - tedubcyyxopz: the string edub is beautiful; - tedubcyyxopz $ \to $ tedwdeaaxopz; - tedwdeaaxopz: the string tedwdea is not beautiful as it contains the palindrome edwde; - tedwdeaaxopz $ \to $ terkreaaxopz; - terkreaaxopz $ \to $ terkreaaarsz; - terkreaaarsz $ \to $ terkreaaaasz; - terkreaaaasz: the string kreaaaa is not beautiful as it contains the palindrome aaaa; - terkreaaaasz: the string asz is beautiful.