一天,小徐的好友邀请他去吃布丁,于是小徐高高兴兴地来到好友家。哇!这么多五彩缤纷的布丁!好友说:“在我们开吃前先玩会儿游戏吧。”于是他将布丁摆成一行,接着说:“我可以把某种颜色的布丁全部变成另一种颜色,我还会在某些时刻问你当前一共有多少段颜色。例如:颜色分别为 1、2、2、1 的四个布丁一共有 3 段颜色。”
输入格式
第一行包含两个整数 $n$ 和 $m$,分别表示布丁的个数和好友操作的次数,$n$ 和 $m$ 之间用空格隔开,第二行包含用空格隔开的 $n$ 个整数 $A_1, A_2, \cdots, A_n$,其中 $A_i(1 \le i \le n)$ 表示第 $i$ 个布丁的颜色。从第三行起的 $m$ 行,依次描述 $m$ 个操作。对每个操作,若第一个数是 $1$,则表示好友要改变颜色,这时空格后依次接两个用空格隔开的整数 $x$ 和 $y(x$ 可能等于 $y)$,表示执行该操作后所有颜色为 $x$ 的布丁被变成颜色 $y$。若第一个数是 $2$,则表示好友要询问目前有多少段颜色,这时应该输出一个整数回答。输入的数据保证 $0< n,m< 100\,001$;$0< A_i,x,y< 1\,000\,000$。
输出格式
输出的行数为 $m$ 次操作中第二类操作(即:询问目前有多少段颜色)的数目,针对每次询问,对应行依次输出当时有多少段颜色。
样例数据
input.txt
4 3
1 2 2 1
2
1 2 1
2
output.txt
3
1