//#include <stdio.h>
//int main()
//{
// int n;
//
// int arr[100][100]= {};
// int i,j=0;
//
// int c=2;
//
// scanf("%d",&n);
// arr[1][n/2+1]=1;
// i=1;
// j=n/2+1;
//
// while(1)
// {
//
//
// i--;
// j++;
//
// if(i<=0)
// {
// i=n;
// }
// if(c%n==0)
// {
// i++;
//
// }
//
// if(j>=n+1)
// {
// j=1;
// }
//
//
// if(c==n*n-1)
// {
// break;
// }
//
// arr[i][j]=c;
// c++;
// }
//
//
// for(i=1; i<=n; i++)
// {
// for(j=1; j<=n; j++)
// {
// printf("%d ",arr[i][j]);
// }
// printf("\n");
// }
//
//
//
// return 0;
//}
/*
#include<stdio.h>
int main() {
int map[500][55] = {0};
int i, j, x, y, n, k=1;
scanf("%d", &n);
x = 0;
y = n/2;
map[x][y] = k++;
for(i=0; i<n*n-1; i++) {
x--;
y++;
if(x<0) {
x = n-1;
}
if(y>=n) {
y = 0;
}
map[x][y] = k++;
if((k-1) % n == 0) {
x++;
map[x][y] = k++;
i++;
}
}
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
printf("%d ", map[i][j]);
}
printf("\n");
}
}
*/
//반복문6개, 가운데기준으로 대칭
#include <stdio.h>
int main()
{
int n,i,j,k,x,y;
int arr[100][100]= {0};
k=1;
scanf("%d",&n);
scanf("%d %d",&x, &y);
arr[x-1][y-1]=k++;
for(j=y-1; j<y-n+2; j++){
arr[x-1][j]=arr[x-1][j-1]+1;
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}



