#include <iostream>
using namespace std;
int n, m, startj, starti, cont, k, i, j, minn=10, xfin, yfin, mat[101][101],step;
const int dx[]={-2, -1, 1, 2, 2, 1, -1, -2};
const int dy[]={1, 2, 2, 1, -1, -2, -2, -1};
void sol (int x, int y, int step);
void afisare ();
int mutari (int x, int y);
bool inside (int x, int y);
int main()
{
cin>>n>>m>>starti>>startj;
mat[starti][startj]=1;
sol(starti, startj, step);
return 0;
}
void sol (int x, int y, int step)
{
mat[x][y]=step;
if (step==n*m) {
afisare();
return;
}
minn=10;
for (k=0 ; k<8 ; k++) {
i=x+dx[k];
j=y+dy[k];
if (inside (i,j) && mat[i][j]==0) {
cont=mutari(i,j);
if (cont<=minn) {
minn=cont;
xfin=i;
yfin=j;
}
}
}
}
int mutari (int x, int y)
{
cont=0;
for (k=0 ; k<8 ; k++) {
i=x+dx[k];
j=y+dy[k];
if(inside (i,j) && mat[i][j]==0) cont++;
}
}
bool inside (int x, int y)
{
return x>0 && y>0 && x<n+1 && y<m+1;
}
void afisare ()
{
for (i=1 ; i<n+1 ; i++) {
for(j=1 ; j<m+1 ; j++) {
cout<<mat[i][j]<<" ";
}
cout<<'\n';
}
}