#pragma GCC optimize("Ofast") #pragma GCC target("avx2") #define rd_init() char*rp=({char*mmap();mmap(0l,1l<<25,1,2,0,0ll);}) #define rd_skip() while(*rp++!=10) #define rd() ({int _v=0,_c;while(_c=*rp++-48,_c>=0)_v=_v*10+_c;_v;}) #define wt(v) {unsigned _z=v;ulong _n=0,_d=0;while(++_n,_d=_d<<8|0x30|_z%10,_z/=10);*(ulong*)wp=_d;wp+=_n;} typedef unsigned long ulong; #define UFSIZE 200004 int ufbuf[UFSIZE]; void uf_init(){ for(int i=0;i=0) t=b; while(b=ufbuf[a],b>=0) ufbuf[a]=t,a=b; return t; } char wbuf[1<<25]; int a[200004][2]; int main(){ uf_init(); for(int i=0;i<200004;++i){ a[i][0]=i+1; a[i][1]=i-1; } rd_init(); int n=rd(); a[n][0]=1; a[1][1]=n; rd_skip(); char*wp=wbuf; for(int t;t=*rp;){ rp+=2; if(t=='1'){ int u=uf_root(rd()); int v=uf_root(rd()); if(u!=v){ if(--n==1){ break; } int x; if(ufbuf[u]