#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;} char wbuf[7*200000]; typedef struct{ int val; int next; int sib; } Node; typedef struct{ int k; int prev; } Move; typedef struct{ int pos; int len; } Group; Node nodes[400001]; Move moves[200000]; Group groups[400001]; latest[200001]; final[200001]; f(i,o){ do{ groups[i].pos=o; if(latest[nodes[i].val]==i){ final[o++]=nodes[i].val; } if(nodes[i].next){ o=f(nodes[i].next,o); } groups[i].len=o-groups[i].pos; }while(i=nodes[i].sib); return o; } main(){ char*rp=mmap(0l,14l+21l*200000+32,1,2,0,0ll); RD(n); RD(m); for(int i=0;i<=n;++i){ latest[i]=i; nodes[i].val=i; nodes[i].sib=i+1; } nodes[n].sib=0; for(int j=0;j=p0&k=p1&k