#include #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; using graph=vector>; void add_undirected_edge(graph& G,int u,int v){ G[u].emplace_back(v); G[v].emplace_back(u); } pair> two_coloring(const graph& G){ int n=G.size(); vector color(n,-1); rep(u,n) if(color[u]==-1) { color[u]=0; queue Q; Q.emplace(u); while(!Q.empty()){ int v=Q.front(); Q.pop(); for(int w:G[v]){ if(color[w]==-1){ color[w]=1-color[v]; Q.emplace(w); } else if(color[w]==color[v]) return {false,vector()}; } } } return {true,color}; } int main(){ int n,m; scanf("%d%d",&n,&m); vector l(n),r(n); rep(i,n) scanf("%d%d",&l[i],&r[i]); graph G(n); rep(i,n) for(int j=i+1;j