/**#include <stdio.h>
int m,n,a,b,c,d,p,q,f,board[1100][1100]={},move=0;
int queue[2][1212121]={},front=-1,back=-1;
void push(int x,int y)
{
if(x<1||x>n||y<1||y>n)
{
return ;
}
queue[0][++back]=x;
queue[1][back]=y;
if(x==c&&y==d)
{
f=1;
}
}
//void view()
//{
// printf("\nqueue >>\n");
// for(int i=front+1;i<=back;i++)
// printf("%d ",queue[0][i]);
// printf("\n");
// for(int i=front+1;i<=back;i++)
// printf("%d ",queue[1][i]);
// printf("\n");
//}
int main()
{
scanf("%d %d %d %d %d",&n,&a,&b,&c,&d);
push(a,b);
m=back;
while(1)
{
front++;
p=queue[0][front];
q=queue[1][front];
// printf("pop data :%d %d\n",p,q);
push(p+2,q+1);
push(p+2,q-1);
push(p-2,q+1);
push(p-2,q-1);
push(p+1,q+2);
push(p-1,q+2);
push(p+1,q-2);
push(p-1,q-2);
if(f==1)
{
break;
}
// view();
if(m==front)
{
m=back;
// printf("%d\n",move);
move++;
}
// if(p==c&&q==d)
// {
// break;
// }
}
printf("%d",move+1);
return 0;
}*/
//체스판
/*
1|. . . . . . . . . . . . . . . . . . . .
2|. . . . . . . . . . . . . . . . . . . .
3|. . . . . . . . . . . . . . . . . . . .
4|. . . . . . . . . . . . . . . . . . . .
5|. . . . . . . . . . . . . . . . . . . .
6|. . . . . . . . . . . . . . . . . . . .
7|. . . . . . . . . . . . . . . . . . . .
8|. . . . . . . . . . . . . . . . . . . .
9|. . . . . . . . . . . . . . . . . 1 . .
10|. . . . . . . . . . . . . . . . . . . N
11|. . . . . . . . . . . . . . . . 2 . . .
12|. . . . . . . . . . . . . . 3 . . . . .
13|. . . . . . . . . . . . 4 . . . . . . .
14|. . . . . . . . . . 5 . . . . . . . . .
15|. . . . . . . . . . . . . . . . . . . .
16|. . . . . . . . . 6 . . . . . . . . . .
17|. . . . . . . 7 . . . . . . . . . . . .
18|. 0 . . . 8 . . . . . . . . . . . . . .
19|. . . 9 . . . . . . . . . . . . . . . .
20|X . . . . . . . . . . . . . . . . . . .
__|_______________________________________
|a b c d e f g h i j k l m n o p q r s t
N=t10
Nr9
Nq11
No12
Nm13
Nk14
Nj16
Nh17
Nf18
Nd19
Nb18
Na20
*/
#include <stdio.h>
int queue[2][111]={},front=-1,back=-1;
int n,m,p,q,i,j,a,b,num=1,cnt=0;
int arr[111][111]={};
int push(int x,int y)
{
if(x>n||y>n||x<1||y<1)
{
return ;
}
queue[0][++back]=x;
queue[1][back]=y;
arr[x][y]=num;
cnt++;
return ;
}
int main()
{
scanf("%d %d %d",&n,&a,&b);
push(a,b);
m=back;
while(1)
{
front++;
p=queue[0][front];
q=queue[1][front];
push(p+1,q);
push(p-1,q);
push(p,q+1);
push(p,q-1);
if(m==front)
{
m=back;
num++;
}
if(cnt==n*n)
{
break;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}



