#include<iostream>
using namespace std;
int map[500][500];
void set()
{
for (int i = 0; i < 500; i++)
{
for (int j = 0; j < 500; j++)
{
map[i][j] = -2;
}
}
}
void set2(int a, int b)
{
for (int i = 1; i <= a; i++)
{
for (int j = 1; j <= b; j++)
{
map[i][j] = -1;
}
}
}
int m1[] = {2,2,1,1,-1,-1,-2,-2};
int m2 [] = {1,-1,2,-2,2,-2,1,-1};
int quex[10000] = { 0 };
int quey[10000] = { 0 };
int main()
{
set();
int n, m, x, y;
cin >> n >> m >> x >> y;
set2(n, m);
int head = 0;
int tail = 1;
quex[0] = x;
quey[0] = y;
map[x][y] = 0;
do
{
for (int i = 0; i < 8; i++)
{
if (map[quex[head] + m1[i]][quey[head] + m2[i]] == -1)
{
quex[tail] = quex[head] + m1[i];
quey[tail] = quey[head] + m2[i];
tail++;
map[quex[head] + m1[i]][quey[head] + m2[i]] = map[quex[head]][quey[head]]+1;
}
}
head++;
} while (head < tail);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
cout << map[i][j]<<" ";
}cout << endl;
}
return 0;
}