#include<stdio.h>
#define MAX 1001

main()
{
	int done, num,i,j;
	int A[MAX][MAX];
	int numrowerrors, rowerrors[2];
	int numcolerrors, colerrors[2];
	int row, col, parity;

	done = 0;
	scanf("%d\n", &num);
	if(num==0) done = 1;
	else
	{
		for(i=0;i<=num;i++)
			for(j=0;j<=num;j++)
			{
				scanf("%d", &A[i][j]);
			}
	}

	while(!done)
	{
		//compute result
		numrowerrors = 0;
		for(row=0;row< num; row++)
		{
			parity = 0;
			for(col=0;col< num;col++)
				parity += A[row][col];
			parity = parity % 2;
			if (parity != A[row][num])
			{
				rowerrors[numrowerrors] = row;
				++numrowerrors;
			}
		}
		
		numcolerrors = 0;
		for(col=0;col< num;col++)
		{
			parity = 0;
			for(row=0;row< num; row++)
				parity += A[row][col];
			parity = parity % 2;
			if (parity != A[num][col])
			{
				colerrors[numcolerrors] = col;
				++numcolerrors;
			}
		}
		// print outputs
		if((numrowerrors==0)&&(numcolerrors==0))
			printf("No Bit errors\n");
		else if((numrowerrors==1)&&(numcolerrors==1))
		{
			//unambiguous - change rowerrors,colerrors
			printf("Bit error at %d,%d\n", rowerrors[0],colerrors[0]);
		}
		else if((numrowerrors==0)&&(numcolerrors==2))
		{
			//ambiguous
			printf("2 errors detected but not corrected\n"); 
		}
		else if((numrowerrors==2)&&(numcolerrors==0))
		{
			//ambiguous
			printf("2 errors detected but not corrected\n"); 
		}
		else if((numrowerrors==2)&&(numcolerrors==2))
		{
			//ambiguous
			printf("2 errors detected but not corrected\n"); 
		}
		else 
		{
			printf("num row err = %d num col err = %d\n",numrowerrors,numcolerrors);
			printf("Input error...exiting\n");
			exit(-1);
		}
		// read inputs
		scanf("%d\n", &num);
		if(num==0) done = 1;
		for(i=0;i<= num;i++)
			for(j=0;j<= num;j++)
			{
				scanf("%d", &A[i][j]);
			}
	}

}
