#Lutece3169. 还有几个一血

还有几个一血

Migrated from Lutece 3169 还有几个一血

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

2024年电子科技大学ACM-ICPC暑假前集训正在热情进行中。lh3k 每天起床,吃完午饭、晚饭,以及睡觉前,都要向我们专题的负责人问道:

「还有几个一血?」

这可麻烦坏了各位负责人。统计一血的方式原本很简单,但是由于数据删除同学恶意抢一血,我们不得不把他 ban 掉一段时间,等到大家都抢到一血后再将数据删除恢复。

具体而言,暑假前集训一共有 nn 名同学参加,负责人为报名参加的同学们准备了 2626 道题目。现在有时间先后顺序发生 qq 个事件,每次事件的形式如下

  1. 1 x y :编号为 xx 的同学通过了编号为 yy 的题目
  2. 2 x :编号为 xx 的同学被 ban 出了集训(如果这位同学之前没有被 ban),或者编号为 xx 的同学恢复了集训资格(如果这位同学之前被 ban 了)。(也就是说编号为 xx 的同学被 ban 的状态发生了一次切换,被切换的同学不会被清空通过记录,一开始时所有同学都没被 ban)
  3. 3:lh3k 发动了一次技能,询问专题负责人们现在在没有被ban的同学的所有通过记录中还有几个题没有通过。

你能帮助负责人们回答 lh3k 的问题吗?

Input

第一行包含两个整数 nnqq,表示参加暑假前集训的人数和事件数。

接下来的有 qq 行,每一行有如上文所述的三种操作之一。

Output

对于每一次 3 询问,输出一行一个整数,表示还剩多少个一血。

Samples

10 10
1 1 1
1 1 2
1 2 2
3
2 1
3
1 1 4
3
2 1
3
24
25
25
23
114 3
3
3
3
26
26
26

Constraints

1n,q1051\le n,q\le 10^5 1xn1\le x\le n 1y261\le y\le 26

Note

下面是对样例一的解释

时间 事件 1 号同学的通过记录 2 号同学的通过记录 A 题一血 B 题一血 D 题一血 还有几个一血
1 1 1 1 A\color{black}{A} None 1 None None 25
2 1 1 2 A,B\color{black}{A,B} 1 24
3 1 2 2 B\color{black}{B}
4 3
5 2 1 A,B\color{lightgrey}{A,B} None 2 25
6 3
7 1 1 4 A,B,D\color{lightgrey}{A,B,D}
8 3
9 2 1 A,B,D\color{black}{A,B,D} 1 23
10 3