//可做模版
#include <algorithm>
#include <bitset>
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <fstream>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <vector>
using namespace std;
#define pi acos(-1)
#define gcd(a,b) __gcd(a,b)
#define PB push_back
#define SIZE(x) (int)x.size()
#define clr(x,y) memset(x,y,sizeof(x))
#define MP(x,y) make_pair(x,y)
#define ALL(t) (t).begin(),(t).end()
#define FOR(i,n,m) for (int i = n; i <= m; i ++)
#define ROF(i,n,m) for (int i = n; i >= m; i --)
#define RI(x) scanf ("%d", &(x))
#define RII(x,y) RI(x),RI(y)
#define RIII(x,y,z) RI(x),RI(y),RI(z)
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
const ll mod = 1e9+7;
const int INF = 1e9;
const double EPS = 1e-8;
/**************************************END************************************/
vector<int>G[205];
int color[205];
bool bipartite(int u)
{
for(int i=0;i<G[u].size();i++)
{
int v=G[u][i];
if(color[v]==color[u])return false;
if(!color[v])
{
color[v]=3-color[u];
if(!bipartite(v))return false;
}
}
return true;
}
int main()
{
int n;
while(~RI(n)&&n)
{
int t;
RI(t);
clr(color,0);
for(int i=0;i<205;i++)
{
G[i].clear();
}
for(int i=0;i<t;i++)
{
int a,b;
RII(a,b);
G[a].push_back(b);
G[b].push_back(a);
}
color[0]=1;
if(bipartite(0))printf("BICOLORABLE.\n");
else printf("NOT BICOLORABLE.\n");
}
}