func_code_string: #include<bits/stdc++.h>   #define fo(i,a,b) for(int i=a;i<=b;i++)   #define gc (p1==p2&&(p2=(p1=fr)+fread(fr,1,1<<20,stdin))==p1?EOF:*p1++)   #define fl fwrite(fw,1,p3-fw,stdout),p3=fw   char ch,fr[1<<21],*p1=fr,*p2=fr,fw[1<<21],*p3=fw;   void rd(int&x)   {    while(!isdigit(ch=gc));x=ch-48;    while( isdigit(ch=gc)) x=ch-48+x*10;   }   void pc(char c) {*p3++=c; if(p3-fw==1<<20)fl;}   void pt(int x) {if(x>9)pt(x/10); pc(x%10+48);}   using namespace std;   typedef pair<int,int>P;   const int N=5e5+9;   int T,n,m,X[N],Y[N],x,y,n1,c[N],sz[N],deg[N],t,d[N];   set<int>r,e[N],E[N];   struct Comp{bool operator()(const int&x,const int&y){return deg[x]>deg[y];}};   multiset<int,Comp>_;   multiset<int,Comp>::iterator it;   #define fi first   #define se second   P a[N],w[N];   void dg(int x)   {    int y;    for(set<int>::iterator it=r.begin();it!=r.end();)     if(e[x].find(y=*it)==e[x].end())     {      E[x].insert(y);      E[y].insert(x);      r.erase(it); dg(y);      it=r.lower_bound(y);     }     else it++;   }   int main()   {    for(rd(T);T--;)    {     rd(n),rd(m); _.clear();     fo(i,1,n) e[i].clear(), E[i].clear(), deg[i]=c[i]=sz[i]=0;     fo(i,1,m)     {      rd(x),rd(y); deg[x]++,deg[y]++; X[i]=x,Y[i]=y;      e[x].insert(y);      e[y].insert(x);     }     fo(i,1,n) _.insert(i);     n1=n;   //  n1=_.size();     while(!_.empty())     {      if(deg[x=*_.begin()]<n1-1) break;      _.erase(_.find(x)), n1--;      for(int y:e[x])      {       _.erase(_.find(y));       e[y].erase(x); deg[y]--; _.insert(y);      }     }   //  n1=_.size();     if(!n1) goto DW;     r.clear();     r.insert(_.begin(),_.end());     for(int x:_) if(r.find(x)!=r.end()) r.erase(x),dg(x);     if(!r.empty())     {      puts( cyka blyat! );      printf( %d %d n ,n,m);      fo(i,1,m) printf( %d %d n ,X[i],Y[i]);      return 0;     }     for(int x:_)      if(!c[x])     {      UP:for(int y:E[x]) if(!c[y]) d[++t]=y;      if(t)      {       for(sz[c[x]=x]=t+1;t;t--) c[d[t]]=x;       continue;      }      y=*E[x].begin();      if(sz[c[y]]==2) {c[c[y]]=sz[c[y]]=0; x=y; goto UP;}      else --sz[c[y]], sz[c[y]=c[x]=x]=2;     }     DW:int nw=0;     for(int x:_) if(sz[x]) w[x]=a[x]=P(nw+sz[x],nw+1), nw+=sz[x];     for(int x:_) if((y=c[x])^x) w[y]=a[x]=P(w[y].fi-1,w[y].se==a[y].se?a[y].fi:w[y].se-1);   //  n1=_.size();     fo(i,1,n) if(_.find(i)==_.end()) ++nw,a[i]=P(nw,nw);     fo(i,1,n) pt(a[i].fi),pc(   );     pc(  n );     fo(i,1,n) pt(a[i].se),pc(   );     pc(  n );    }    fl;   }