#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5,M=1e6+5;
int n,m,ans;
int en[M],len[M],b[M],a[N],p[N];
void merge(int x,int y){
if(x==y||len[b[x]]==0||b[x]==b[y]) return;
if(len[x]>len[y]){
swap(b[x],b[y]);
}
int s1=b[x],s2=b[y];
b[x]=y;
for(int i=en[s1];i;i=p[i]){
if(s2==a[i-1]) ans--;
if(s2==a[i+1]) ans--;
}
int pri=0;
for(int i=en[s1];i;i=p[i]){
a[i]=s2;
pri=i;
}
p[pri]=en[s2];en[s2]=en[s1];
b[s1]=s2;
len[s2]+=len[s1];
en[s1]=len[s1]=0;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]!=a[i-1]) ans++;
p[i]=en[a[i]];en[a[i]]=i;
b[a[i]]=a[i];
len[a[i]]++;
}
for(int i=1;i<=m;i++){
int op,x,y;
scanf("%d",&op);
if(op==2) printf("%d\n",ans);
else{
scanf("%d%d",&x,&y);
merge(x,y);
}
}
}