你知道 Just Odd Inventions 公司吗?这家公司的业务是进行“奇妙的发明(just odd inventions)”。在此简称为 JOI 公司。
为了扩大业务,JOI 公司决定招聘新员工。
共有 $N$ 名候选人。候选人分别被编号为 $1$ 到 $N$,每位候选人都被设定了一个称为评价值的整数。
在本次招聘中,公司将录用所有评价值不低于某个特定值的候选人。新录用的员工将被分成若干个小组。新录用员工的分组需满足以下条件:
- 当候选人 $a$ 和候选人 $b$ ($a < b$) 同时被录用时,他们属于同一个小组,当且仅当所有候选人 $c$ ($a \le c \le b$) 也都被录用。
作为 JOI 公司的人事负责人,你需要通过依次处理总共 $M$ 个查询,来估算本次招聘中会形成的小组数量。第 $j$ 个查询属于以下两种类型之一:
- 求出录用所有评价值不低于 $B_j$ 的候选人时所形成的小组数量。这类查询称为解答查询。
- 将候选人 $C_j$ 的评价值更新为 $D_j$。这类查询称为更新查询。
任务
给定关于 $M$ 个查询的信息,编写一个程序,求出每个解答查询对应的小组数量。
输入格式
从标准输入读取以下数据:
- 第 $1$ 行包含两个整数 $N, M$,以空格分隔。这表示有 $N$ 名候选人,你需要处理 $M$ 个查询。
- 接下来的 $N$ 行中的第 $i$ 行 ($1 \le i \le N$) 包含一个整数 $A_i$。这表示在处理查询之前,候选人 $i$ 的评价值为 $A_i$。
- 接下来的 $M$ 行中的第 $j$ 行 ($1 \le j \le M$) 包含 $2$ 个或 $3$ 个整数,以空格分隔。设第 $1$ 个整数为 $T_j$,则该行的内容为以下之一:
- 当 $T_j = 1$ 时,该行包含整数 $T_j, B_j$,以空格分隔。这表示第 $j$ 个查询是一个解答查询,求录用所有评价值不低于 $B_j$ 的候选人时所形成的小组数量。
- 当 $T_j = 2$ 时,该行包含整数 $T_j, C_j, D_j$,以空格分隔。这表示第 $j$ 个查询是一个更新查询,将候选人 $C_j$ 的评价值更新为 $D_j$。
输出格式
将每个解答查询对应的小组数量依次输出到标准输出,每行输出一个。
数据范围
所有输入数据满足以下条件:
- $1 \le N \le 200\,000$
- $1 \le M \le 200\,000$
- $1 \le A_i \le 1\,000\,000\,000$ ($1 \le i \le N$)
- $1 \le T_j \le 2$ ($1 \le j \le M$)
- $1 \le B_j \le 1\,000\,000\,000$ ($1 \le j \le M$)
- $1 \le C_j \le N$ ($1 \le j \le M$)
- $1 \le D_j \le 1\,000\,000\,000$ ($1 \le j \le M$)
- 至少存在一个 $j$ ($1 \le j \le M$) 使得 $T_j = 1$。
子任务
子任务 1 [10 分]
满足以下条件: $N \le 2\,000$ $M \le 2\,000$
子任务 2 [30 分]
- 满足 $T_j = 1$ ($1 \le j \le M$)。
子任务 3 [60 分]
- 没有额外限制。
样例
样例输入 1
5 4 8 6 3 5 4 1 5 2 4 1 1 5 1 3
样例输出 1
2 1 2
说明
- 第 $1$ 个查询是解答查询。若录用评价值在 $5$ 以上的候选人 $1, 2, 4$,则会形成由候选人 $1$ 和 $2$ 组成的小组,以及由候选人 $4$ 组成的小组,共 $2$ 个小组,因此输出 $2$。
- 第 $2$ 个查询是更新查询。将候选人 $4$ 的评价值更新为 $1$。
- 第 $3$ 个查询是解答查询。若录用评价值在 $5$ 以上的候选人 $1$ 和 $2$,则会形成由候选人 $1$ 和 $2$ 组成的 $1$ 个小组,因此输出 $1$。
- 第 $4$ 个查询是解答查询。若录用评价值在 $3$ 以上的候选人 $1, 2, 3, 5$,则会形成由候选人 $1, 2, 3$ 组成的小组,以及由候选人 $5$ 组成的小组,共 $2$ 个小组,因此输出 $2$。
样例输入 2
7 5 13 19 1 15 13 1 19 1 20 1 1 1 6 1 11 1 17
样例输出 2
0 1 3 3 2
样例输入 3
10 5 8 10 15 2 2 8 5 12 11 4 1 5 2 8 4 1 12 2 5 11 1 16
样例输出 3
2 1 0