Busy Beaver 在一排中排列了 $N$ 根木头来作为他大坝的基底。每根木头都有一个介于 $-2$ 和 $2$ 之间的整数质量值。不时地,一些木头会被替换。他偶尔想知道是否存在一个连续的木头段,其总质量等于给定的非零数 $X$,并且可能还想知道这个片段的具体位置。请帮助 Busy Beaver 高效地处理所有的修改和查询。
输入格式
第一行包含一个整数 $T$ ($1 \le T \le 10^4$) —— 测试用例的数量。
每个测试用例的第一行包含两个整数 $N$ 和 $Q$ ($1 \le N, Q \le 2 \cdot 10^5$) —— 分别表示数组的大小和查询的数量。
每个测试用例的第二行包含 $N$ 个整数 $a_1, a_2, \dots, a_N$ ($-2 \le a_i \le 2$) —— 木头的初始质量。
接下来的 $Q$ 行,每行代表一个查询,格式为以下两种之一:
1 i x($1 \le i \le N$, $-2 \le x \le 2$) — 将第 $i$ 根木头的质量修改为 $x$。2 X($-2N \le X \le 2N$, $X \neq 0$) — 寻找一个总质量为 $X$ 的连续木头段。
保证至少存在一个第二种类型的查询。
所有测试用例中 $N$ 的总和不超过 $2 \cdot 10^5$。
所有测试用例中 $Q$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个第二种类型的查询,如果存在满足条件的连续段,则在第一行输出 YES,紧接着在下一行输出该段的左右端点索引 $l$ 和 $r$ ($1 \le l \le r \le N$)。如果不存在这样的段,则在单行中输出 NO。
你可以输出任意大小写形式的答案。例如,字符串 "yEs"、"yes"、"Yes" 和 "YES" 都将被视为肯定的回答。
子任务
本题共有四个子任务。如果你的 YES/NO 回答正确,但输出的区间端点不正确,你将获得每个子任务 50% 的分数。为了获得这部分分数,在所有输出 YES 的情况下,你仍然必须在下一行输出介于 $1$ 和 $N$ 之间的整数 $l$ 和 $r$。
- (10 分):所有测试用例中 $N$ 的总和最大为 $10^3$,且所有测试用例中 $Q$ 的总和最大为 $10^3$。
- (20 分):对于所有的 $i$,$-1 \le a_i \le 1$,且对于任何第一种类型的查询,$-1 \le x \le 1$。
- (30 分):对于所有的 $i$,$0 \le a_i \le 2$,且对于任何第一种类型的查询,$0 \le x \le 2$。
- (40 分):无附加限制。
样例
输入样例 1
4 5 5 -1 2 0 -2 1 1 2 1 2 1 1 4 2 2 3 2 -2 4 3 -1 -1 -1 -1 1 4 1 2 -1 2 -4 6 6 1 -1 1 -1 1 -1 1 3 0 2 1 2 -2 2 3 1 3 2 2 1 6 3 0 0 0 0 0 0 2 2 1 1 1 2 1
输出样例 1
YES 2 2 YES 3 5 NO YES 2 2 NO YES 1 1 YES 2 4 NO YES 1 1 NO YES 1 1
说明
对于第一个测试用例:
- 初始数组为 $[-1, 2, 0, -2, 1]$。
- 在第一次查询
1 2 1之后,数组变为 $[-1, 1, 0, -2, 1]$。 - 第二次查询
2 1要求寻找一个和为 $1$ 的连续段,这可以通过 $[1]$(第 $2$ 个元素)来实现。 - 在第三次查询
1 4 2之后,数组变为 $[-1, 1, 0, 2, 1]$。 - 第四次查询
2 3要求寻找一个和为 $3$ 的连续段,这可以通过 $[1, 0, 2]$(第 $2$ 到 $4$ 个元素)来实现。 - 第五次查询
2 -2要求寻找一个和为 $-2$ 的连续段。可以验证不存在这样的子数组。
对于第二个测试用例:
- 初始数组为 $[-1, -1, -1, -1]$。
- 在第一次查询
1 4 1之后,数组变为 $[-1, -1, -1, 1]$。 - 第二次查询
2 -1要求寻找一个和为 $-1$ 的连续段,这可以通过 $[-1]$(前三个元素中的任意一个)来实现。 - 第三次查询
2 -4要求寻找一个和为 $-4$ 的连续段。可以验证不存在这样的子数组。