#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); #define rd(v) int v=0;{int _c;while(_c=*rp++-48,_c>=0)v=v*10+_c;} int wbuf[1<<28]; #define UFSIZE 100001 typedef struct{ int p; int v; } UFDPNode; #define u ufdpnodes UFDPNode u[UFSIZE]; void ufdp_init(){ for(int i=0;i=0){ u[a].v=u[b].v<0?u[b].v:u[b].v+u[a].v; u[a].p=r; } } return r; } } void ufdp_unite(int a,int b){ a=ufdp_root(a); b=ufdp_root(b); if(a!=b){ if(u[a].pu[b].p){ u[b].p+=u[a].p; u[a].p=b; u[a].v=-1; }else{ if(u[a].v>1)+(z&1?500000004:0); } } char*rp=mmap(0l,1l<<28,1,2,0,0ll); ufdp_init(); rd(n); rd(m); while(m--){ rd(a); rd(b); ufdp_unite(a,b); } int*wp=wbuf; for(int i=1;i<=n;++i){ int r=ufdp_root(i); int v=u[i].v; if(v>=0&&r!=i){ v+=u[r].v; } *wp++=w[v+1][0]; *wp++=w[v+1][1]; *wp++=w[v+1][2]; } write(1,wbuf,(wp-wbuf)*sizeof*wbuf); _exit(0); }