// light.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <math.h>
#define LENGTH 20
using namespace std;
int a[LENGTH][LENGTH];	
int size;


void Arrange(int num)
{
	int i;
	int j;
	for(i=0;i<size;i++)
		for(j=0;j<size;j++)
			a[i][j]=0;

	if(size<=9)
	{
	for(i=0;i<size;i++)
		a[i][i]=1;

	int k=0;
	for(i=1;i<size;i++)
		for(j=0;j<i;j++)
		{
			a[i][j]=a[j][i]= (num>>k) & 0x01;
			k++;
		}
	}
	else if(size%2==0)
	{
	for(i=0;i<size;i++)
		a[i][i]=1;
	for(i=0;i<size;i++)
		a[i][size-1-i]=1;



	int k=0;
	for(i=1;i<size/2;i++)
		for(j=0;j<i;j++)
		{
			a[i][j]=a[j][i]= (num>>k) & 0x01;
			
			a[i][size-1-j]=a[size-1-j][i]=	(num>>k) & 0x01;
			
			a[j][size-1-i]=a[size-1-i][j]=   (num>>k) & 0x01;
			
			a[size-1-i][size-1-j]=a[size-1-j][size-1-i]= (num>>k) & 0x01;
			
			
			k++;
		}
	}
	else
	{
	for(i=0;i<size;i++)
		a[i][i]=1;
	for(i=0;i<size;i++)
		a[i][size-1-i]=1;



	int k=0;
	for(i=1;i<(size+1)/2;i++)
		for(j=0;j<i;j++)
		{
			a[i][j]=a[j][i]= (num>>k) & 0x01;
			
			a[i][size-1-j]=a[size-1-j][i]=	(num>>k) & 0x01;
			
			a[j][size-1-i]=a[size-1-i][j]=   (num>>k) & 0x01;
			
			a[size-1-i][size-1-j]=a[size-1-j][size-1-i]= (num>>k) & 0x01;
			
			
			k++;
		}

	}


}

bool IsAllLight()
{
	int i;
	int j;

	for(i=0;i<size;i++)
		for(j=0;j<size;j++)
		{
			int k=a[i][j];

			if(i>0)      k+=a[i-1][j];
			if(j>0)	     k+=a[i][j-1];
			if(i<size-1) k+=a[i+1][j];
			if(j<size-1) k+=a[i][j+1];

			if((k & 0x01) ==0)
				return false;

		}
		return true;
}


void main(int argc, char* argv[])
{

	int i;

	ofstream out("result.txt");

	char c;
	while(true)
	{
	
	cout<<"please input the size of the board:0 exit"<<endl;

	cin>>size;

	if(size==0)break;

	out<<"size is"<<size<<endl;

	int total=   pow(2,(size-1)*size/2);
	if(size>9 && size%2==0) total=	pow(2,(size/2-1)*size/2);

	if(size>9 && size%2==1) total=	pow(2,((size+1)/2-1)*(size+1)/2);

	for(i=0;i<pow(2,30);i++)
	{
		Arrange(i);
		if(IsAllLight())
		{
			out<<"find answer"<<endl;
			for(int m=0;m<size;m++)
			{	for(int n=0;n<size;n++)
				{
					out<<a[m][n]<<" ";
				}
				out<<endl;
			}
			break;
		}
	}

	//cout<<"compute finised,please enter e to exit:)"<<endl;
	}

	//cin>>c;
	
	//return 0;
}


