#include #include #include #include #include using namespace std; typedef pair pii; int n,q; int x[100001],y[100001],usun[100001]; int t[100001],v[100001],fu[10][100001]; int size[100001],zm_size[2000001]; int dupa; map m; vector tr[1<<18]; vector ans; int c_size[10]; pii change[10][2000000]; void dodaj(int a,int b,int nr) { a+=(1<<17)-1; b+=(1<<17)+1; while (a+1>=1; b>>=1; } } int find(int poz,int a) { if (!fu[poz][a]) return a; change[poz][c_size[poz]++]=make_pair(a,fu[poz][a]); fu[poz][a]=find(poz,fu[poz][a]); return fu[poz][a]; } void Union(int poz,int a,int b) { int fa=find(poz,a),fb=find(poz,b); if (fa!=fb) { if (size[fa]y[i]) swap(x[i],y[i]); if (t[i]==0) { scanf("%d",&v[i]); m[make_pair(x[i],y[i])]=i; } if (t[i]==1) { v[i]=m[make_pair(x[i],y[i])]; dodaj(v[i],i,v[i]); usun[v[i]]=1; } } for (int i=1; i<=q; i++) { if (t[i]==0 && usun[i]==0) dodaj(i,q,i); } dfs(1); for (int x:ans) printf("%d\n",x); }