#include "Alicelib.h"
#include <cassert>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
//#define int long long
typedef vector<int> vi;
#define sz(x) (int)(x).size()
#define debug(x) cerr<<#x<<" is "<<x<<endl;
#define pb push_back
const int maxn=5e3+5;
const int mod=998244353;
const int inf=4e18+5;
void Alice( int N, int M, int A[], int B[] ){
//InitG(((N+3)*N)/2,M+((N+3)*N)/2);
int c=N;
int p=0;
vector<pair<int,int>> e;
for(int i=0;i<M;i++){
//MakeG(p,A[i],B[i]);
e.pb({A[i],B[i]});
p++;
}
for(int i=0;i<N;i++){
for(int j=0;j<=i;j++){
//MakeG(p,i,c);
e.pb({i,c});
//cerr<<p<<' '<<i<<' '<<c<<' '<<endl;
p++;
c++;
}
}
InitG(c,sz(e));
for(int i=0;i<sz(e);i++){
MakeG(i,e[i].first,e[i].second);
//cerr<<e[i].first<<' '<<e[i].second<<endl;
}
}
#include "Boblib.h"
#include <cassert>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
//#define int long long
typedef vector<int> vi;
#define sz(x) (int)(x).size()
#define debug(x) cerr<<#x<<" is "<<x<<endl;
#define pb push_back
const int maxn=5e3+5;
const int mod=998244353;
const int inf=4e18+5;
void Bob( int V, int U, int C[], int D[] ){
if(V==2){
InitMap(1,0);
return;
}
vi adj[V];
for(int i=0;i<U;i++){
adj[C[i]].pb(D[i]);
adj[D[i]].pb(C[i]);
}
bool l[V];
memset(l,0,sizeof(l));
int n=0;
for(int i=0;i<V;i++){
if(sz(adj[i])==1)l[i]=1;
else n++;
}
vector<pair<int,int>> e;
int a[V];
for(int i=0;i<V;i++){
if(l[i])continue;
int c=-1;
for(int j:adj[i]){
if(l[j])c++;
}
a[i]=c;
}
for(int i=0;i<V;i++){
if(l[i])continue;
for(int j:adj[i]){
if(!l[j]&&i<j)e.pb({a[i],a[j]});
}
}
InitMap(n,sz(e));
for(auto [i,j]:e){
//cerr<<i<<' '<<j<<endl;
MakeMap(i,j);
}
}