#include<iostream>
int num,zu;
int data[100][2]={0};
int a[10][10]={0};
int visit[10]={0};
int flag=0;
typedef struct node
{
    int x;
    int c;
}node;
node point[10000]={0};
int fan(int i)
{
	if(i==1)
	{return 2;}
	else
	{return 1;}
}
void bfs(int i)
{
	int tou=0;
	int wei=1;
	point[tou].x=i;
	point[tou].c=1;
	visit[i]=1;
	while(tou<wei)
	{   
		 if(flag==1)
		 {
			 break;
		 }
			for(int k=1;k<=num;k++)
			{
				if(a[point[tou].x][k]==1)
				{   a[point[tou].x][k]=0;
					if(visit[k]!=0)
					{
						int p=visit[k];
						int q=point[tou].c;
						if(p==q)
						{   flag=1;
						
							break;}
						else{
							int h=fan(point[tou].c);
							point[wei].x=k;
							point[wei].c=h;
							visit[k]=h;
							wei++;

						}

					}else{
						int r=fan(point[tou].c);
						point[wei].c=r;
						point[wei].x=k;
						wei++;
						visit[k]=r;
					}

				}

			  }
			tou++;
	}		

}
int main()
{  
	 freopen("input.txt","r",stdin);
	while(scanf("%d%d",&num,&zu)!=EOF)
	{
		for(int i=0;i<zu;i++)
		{
			for(int j=0;j<2;j++)
			{
				scanf("%d",&data[i][j]);
			}
		}
		for(int i=0;i<zu;i++)
		{
			a[data[i][0]][data[i][1]]=1;

		}
		for(int i=1;i<=num;i++)
			{ for(int j=1;j<=num;j++)
			 {
				printf("%d",a[i][j]);

			 }
		    printf("\n");
		    }	   
		 bfs(1);
		 if(flag==1)
		 {
			 printf("no");

		 }else
		 {
			for(int i=1;i<10;i++)
			{
				if(visit[i]==1)
				{
					printf("%d",i);
				}
			}

		 }
	 }

}