#include<bits/stdc++.h>
using namespace std;
int d[8][2]={{1,2},{2,1},{-1,2},{-2,1},{1,-2},{2,-1},{-1,-2},{-2,-1}};
int m,n;
int mapx[1145][1145];
bool jude[1145][1145];
void bfs(int x,int y)
{
queue<pair<int,int> >q;
q.push({x,y});
while(q.size())
{
pair<int,int>t=q.front();q.pop();
int tx=t.first,ty=t.second;
jude[tx][ty]=true;
for(int i=0;i<8;i++)
{
int nx=tx+d[i][0],ny=ty+d[i][1];
if(!jude[nx][ny]&&nx>=1&&nx<=n&&ny>=1&&ny<=m)
{
mapx[nx][ny]=mapx[tx][ty]+1;
q.push({nx,ny});
}
}
}
}
int main()
{
int x,y;
cin>>n>>m>>x>>y;
mapx[x][y]=0;
bfs(x,y);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(!mapx[i][j])
mapx[i][j]=-1;
mapx[x][y]=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cout<<mapx[i][j]<<" ";
cout<<endl;
}
return 0;
}