#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
typedef vector<int> vi;
int main() {
    int V, E, u, v;
    vector<vi> AdjList;
    while (scanf("%d", &V), V) {
        AdjList.assign(V, vi());
        scanf("%d", &E);
        for (int i = 0; i < E; i++) {
            scanf("%d %d", &u, &v);
            AdjList[u].push_back(v);
            AdjList[v].push_back(u);
        }
        queue<int> q;
        q.push(0);
        vi color(V, 1e9);
        color[0] = 0;
        bool isBipartite = true;
        while (!q.empty() && isBipartite) {
            int u = q.front();
            q.pop();
            for (int j = 0; j < (int) AdjList[u].size(); j++) {
                int v = AdjList[u][j];
                if (color[v] == 1e9) {
                    color[v] = 1 - color[u];
                    q.push(v);
                } else if (color[v] == color[u]) {
                    isBipartite = false;
                    break;
                }
            }
        }
        if (isBipartite)
            printf("BICOLORABLE.\n");
        else
            printf("NOT BICOLORABLE.\n");
    }
    return 0;
}
 
			 
			
0 Comments