袋鼠将军的魔法
题号:NC295061
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}定义字符串 T=\texttt{(即 26 个小写字母依次排列)。袋鼠将军对字符 T_i 施加 1 次魔法的结果为字符 T_{i + 1},特别地,袋鼠将军对字符 T_{26} 施加 1 次魔法的结果为字符 T_1。例如,对 \texttt{`x'} 施加 1 次魔法的结果为 \texttt{`y'},对 \texttt{`x'} 施加 2 次魔法的结果为 \texttt{`z'},对 \texttt{`x'} 施加 3 次魔法的结果为 \texttt{`a'}

\hspace{15pt}现在,给定一个字符串 s,袋鼠将军需要维护以下两种操作:
{\hspace{20pt}}_\texttt{1.}\,给定 lr,袋鼠将军需要对 s[l..r]=s_l, s_{l+1}, \ldots, s_r 分别施加 d 次魔法。
{\hspace{20pt}}_\texttt{2.}\,给定 lr,袋鼠将军需要判断能否通过重新排列 s[l..r]=s_l, s_{l + 1}, \ldots, s_r(r - l + 1) 个字符,使排列后的字符串变成一个回文串
\hspace{15pt}对于每一个操作 \texttt{2},你需要给出对应的结果。
\hspace{15pt}注意,本题中字符串的下标从 1 开始计算。

【名词解释】
\hspace{15pt}一个字符串被称作回文串,当且仅当这个字符串从左往右读和从右往左读是相同的。更具体地,对于一个字符串 T,若其长度为 n,当且仅当对于所有 i = 1, 2, \ldots, nT_{i} = T_{n + 1 - i} 时,T 为回文串。例如,\texttt{\texttt{\texttt{ 都是回文串,而 \texttt{\texttt{ 不是回文串。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 10^4\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行输入两个整数 n, q\left(1\leq n, q\leq 10^5\right) 代表字符串的长度、操作的次数。
\hspace{15pt}第二行输入一个长度为 n,仅由小写字母组成的字符串 s
\hspace{15pt}此后 q 行,第 i 行先输入一个整数 o_i\left(1 \leq o_i \leq 2\right) 代表第 i 次操作的类型,编号同题干,随后在同一行:
\hspace{23pt}\bullet\,o_i = 1,输入三个整数 l_i, r_i, d_i\left(1\leq l_i \leq r_i \leq n;\ 1\leq d_i \leq 10^9\right)
\hspace{23pt}\bullet\,o_i = 2,输入两个整数 l_i, r_i\left(1 \leq l_i \leq r_i \leq n\right)
\hspace{15pt}保证至少存在一次操作 \texttt{2}

\hspace{15pt}除此之外,保证单个测试文件的 n 之和、q 之和均不超过 10^5,且至少存在一次操作 \texttt{2}

输出描述:

\hspace{15pt}对于每一组测试数据的每一次操作 \texttt{2},新起一行,如果袋鼠将军能够将给定区间内的字符重新组合成回文串,输出 \rm{Yes};否则输出 \rm{No}

\hspace{15pt}您可以以任何大小写形式输出答案,例如,\rm yEs\rm yes 和 \rm YeS 都将被视为肯定的回答。
示例1

输入

复制
2
8 5
kangaroo
2 6 8
2 1 1
2 1 5
1 3 4 4
2 1 5
3 3
zab
2 1 3
1 1 1 2
2 1 3

输出

复制
Yes
Yes
No
Yes
No
Yes

说明

\hspace{15pt}对于第一组测试数据:
\hspace{23pt}\bullet\,根据定义,s[6..8]=\texttt{ 可以重新排列为回文串;
\hspace{23pt}\bullet\,s[1..1]=\texttt{ 可以重新排列为回文串;
\hspace{23pt}\bullet\,可以证明,s[1..5]=\texttt{ 不能重新排列为回文串;
\hspace{23pt}\bullet\,在完成第 4 次操作后,原字符串变为 s=\texttt{
\hspace{23pt}\bullet\,s[1..4]=\texttt{ 可以被重新排列为 \texttt{,是回文串。

\hspace{15pt}对于第二组测试数据:
\hspace{23pt}\bullet\,在第 2 次操作后,原字符串变为 s=\texttt{