小红的字符修改
题号:NC266567
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红拿到了一个字符串,她将进行以下两种操作:

- 1 x c:将第x个字符修改为c
- 2 l1 r1 l2 r2:查询s[l1,r1]子串是否和s[l2,r2]子串相等。

输入描述:

第一行输入两个正整数n,q,用空格隔开。代表字符串初始长度和询问次数。
第二行输入一个长度为n的、仅由小写字母组成的字符串。
接下来的q行,每行输入一行操作。操作的形式如输入描述所示。
1\leq n \leq 10^6
1\leq q \leq 10^5
1\leq l1 \leq r1 \leq n
1\leq l2 \leq r2 \leq n
r1-l1=r2-l2
1\leq x \leq n
c保证是小写字母。

输出描述:

对于每个操作 2,如果两子串相等,则输出"Yes"。否则输出"No"
示例1

输入

复制
5 4
abcba
2 1 2 4 5
1 3 a
2 1 3 3 5
2 1 3 2 4

输出

复制
No
Yes
No