void bnb(int v){
	if(v==n)
	{
		if(B < k)
		{
			B=k;
			saveColoring();
		}
		return;
	}

	for(int i = 1 ; i <= min(k+1,B-1) ; ++i){
		isInvalid=false;
		newColor=false;
		
		for(int j=0;j < (int)adj[v].size();++j)
			if(adj[v][j] < v && color[adj[v][j]]==i){
				isInvalid=true;
			}
		if(isInvalid)
			continue;

		if(i==k+1)
		{
			k++;
			newColor=true;
		}
		color[v]=i;
		bnb(v+1);
		if(newColor)
			k--;
	}
}