/*
#include <stdio.h>
int n;
int k[2][700] = {};
int s = 0, e = 0;
int px, py;
int arr[27][27] = {};
int sum = 0;
int d[100] = {};
int t = 0;
//void view()
//{
// printf("queue [ ");
// for( int i=s;i<e;i++)
// {
// printf("( %d, %d ) ",k[0][i],k[1][i]);
// }
// printf("\n");
//}
void push (int x, int y)
{
if (x > n || x < 1 || y > n || y < 1 || arr[x][y] != 1)
{
return;
}
k[0][e] = x;
k[1][e] = y;
arr[x][y] = 0;
d[sum]++;
e++;
}
void pop()
{
s++;
px = k[0][s - 1];
py = k[1][s - 1];
}
int main()
{
scanf("%d", &n);
for (int i = 1 ; i <= n ; i++)
{
for (int j = 1 ; j <= n ; j++)
{
scanf("%1d", &arr[i][j]);
}
}
for (int i = 1 ; i <= n ; i++)
{
for (int j = 1 ; j <= n ; j++)
{
if (arr[i][j] == 1)
{
sum++;
push(i, j);
// printf("%d %d\n",i,j);
while (s != e)
{
pop();
// arr[px][py] 근처에서 방문x 연결o 모두 push
push(px + 1, py);
push(px - 1, py);
push(px, py + 1);
push(px, py - 1);
// view();
}
}
}
}
printf("%d\n", sum);
for (int i = 1 ; i < sum ; i++)
{
for (int j = 1 ; j <= sum - i ; j++)
{
if (d[j] > d[j + 1])
{
t = d[j];
d[j] = d[j + 1];
d[j + 1] = t;
}
}
}
for (int i = 1 ; i <= sum ; i++)
{
printf("%d\n", d[i]);
}
}
*/
#include <stdio.h>
int q[2][10001]={};
int s=0, e=0;
int n;
int x, y, px, py;
int arr[101][101]={};
void push(int px, int py)
{
if (px>n || py>n || px<1 || py<1)
{
return;
}
q[0][e]=px;
q[1][e]=py;
e++;
}
void pop()
{
s++;
px = q[0][s-1];
py = q[1][s-1];
}
int main()
{
scanf("%d", &n);
scanf("%d %d", &x, &y);
arr[x][y]=1;
push (x, y);
while (s!=e)
{
pop();
push(x+1, y);
push(x-1, y);
push(x, y+1);
push(x, y-1);
arr[x+1][y]=arr[x][y]+1;
arr[x-1][y]=arr[x][y]+1;
arr[x][y-1]=arr[x][y]+1;
arr[x][y+1]=arr[x][y]+1;
}
for (int i=1 ; i<=n ; i++)
{
for (int j=1 ; j<=n ; j++)
{
printf("%d", arr[i][j]);
}
}
}



