P0999

[HNOI2009]梦幻布丁

[HNOI2009]梦幻布丁

NN 个布丁排成一行,需要进行 MM 次操作。每次操作可能将某种颜色的所有布丁变为另一种颜色,或询问当前共有多少段颜色连续相同的布丁。

例如,44 个布丁的颜色依次为 1,2,2,11,2,2,1,则共有 33 段颜色。

输入格式

第一行包含两个整数 N,MN,M,分别表示布丁的数量和操作次数。

第二行包含 NN 个整数 A1,A2,…,ANA_1,A_2,\ldots,A_N,其中 AiA_i 表示第 ii 个布丁的颜色。

接下来 MM 行,每行描述一次操作:

  • 若第一个整数为 11,则后面有两个整数 X,YX,Y,表示将所有颜色为 XX 的布丁变为颜色 YY。XX 可能等于 YY;
  • 若第一个整数为 22,则询问当前共有多少段颜色。

输出格式

对于每个类型为 22 的询问,输出一行一个整数,表示当前颜色段的数量。

样例输入

4 3
1 2 2 1
2
1 2 1
2

样例输出

3
1

数据范围

  • 1≤N,M≤1061\le N,M\le 10^6;
  • 所有颜色编号 Ai,X,YA_i,X,Y 均为非负的 3232 位有符号整数;
  • 操作类型只可能为 11 或 22。

来源与许可

本题为 HNOI 2009 试题「梦幻布丁」,题面与测试数据整理自 BZOJ。

样例 1

输入

4 3
1 2 2 1
2
1 2 1
2

输出

3
1