#CF2123G. 模排序

模排序

G. 模排序
时间限制:5 秒
内存限制:256 兆字节

给定一个整数 mm2m51052 \le m \le 5 \cdot 10^5)和一个由小于 mm 的非负整数组成的数组 aa

回答以下形式的查询:

  • 1 i x:将 aia_i 赋值为 xx
  • 2 k:在一次操作中,你可以选择一个元素 aia_i 并将其赋值为 (ai+k)modm(a_i + k) \bmod m^* —— 判断是否存在一系列(可能为零次)操作,使得 aa 变为非递减^\dagger

注意,查询 22 的实例是相互独立的,即不实际进行操作。查询 11 的实例是持久的。

^* a(modm)a \pmod{m} 定义为唯一的整数 bb 满足 0b<m0 \le b < maba-bmm 的整数倍。

^\dagger 一个大小为 nn 的数组 aa 称为非递减,当且仅当对于所有 1i<n1 \le i < naiai+1a_i \le a_{i+1}


输入
第一行包含一个整数 tt1t1041 \le t \le 10^4)—— 测试用例数。

每个测试用例的第一行包含三个整数 n,m,qn, m, q2n1052 \le n \le 10^52m51052 \le m \le 5 \cdot 10^51q1051 \le q \le 10^5)—— 数组 aa 的大小、整数 mm 以及查询数量。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n0ai<m0 \le a_i < m)。

接下来 qq 行,每行是以下两种形式之一:

  • 1 i x1in1 \le i \le n0x<m0 \le x < m
  • 2 k1k<m1 \le k < m

保证所有测试用例的 nn 之和以及 qq 之和均不超过 10510^5


输出
对于每个查询 22 的实例,输出一行,若存在一系列操作使得 aa 变为非递减,则输出 "YES",否则输出 "NO"

输出大小写不敏感(例如 "yEs""yes""Yes""YES" 均视为肯定回答)。


样例
输入

2
7 6 6
4 5 2 2 4 1 0
2 4
1 4 5
2 4
2 3
1 7 2
2 3
8 8 3
0 1 2 3 4 5 6 7
2 4
1 3 4
2 4

输出

YES
NO
NO
YES
YES
NO

说明
第一个样例中,初始数组为:

45224104 \quad 5 \quad 2 \quad 2 \quad 4 \quad 1 \quad 0

通过对 a1a_1 操作两次,a2a_2 操作两次,a5a_5 操作一次,a6a_6 操作两次,a7a_7 操作一次,得到数组:

01222340 \quad 1 \quad 2 \quad 2 \quad 2 \quad 3 \quad 4

该数组是非递减的。

第二次查询后,数组变为:

45254104 \quad 5 \quad 2 \quad 5 \quad 4 \quad 1 \quad 0

可以证明,无法通过 ai:=(ai+4)mod6a_i := (a_i + 4) \bmod 6 的操作使其变为非递减,也无法通过 ai:=(ai+3)mod6a_i := (a_i + 3) \bmod 6 的操作实现。