#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);
}
}
}
}
}