#include<bts/stdc++.h>
int dx[8]={-2,-2,-1,-1,2,2,1,1};
int dy[8]={-1,1,2,-2,1,-1,2,-2};
int n,m,x,y;
int a[410][410];
struct node{
int x,y;
int step;
};
void bfs(int sx,int sy){
queue<node>q;
memset(a,-1,sizeof(a));
q.push((node){sx,sy,0});
a[sx][sy]=0;
while(!q.empty()){
node z=q.front();
q.pop();
for(int i=0;i<8;i++){
int xx=z.x+dx[i],yy=z.y+dy[i];
if(xx<1||xx>n||yy<1||yy>m||a[xx][yy]!=-1)continue;
a[xx][yy]=z.step+1;
q.push((node){xx,yy,z.step+1});
}
}
}
int main(){
cin>>n>>m>>x>>y;
bfs(x,y);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)cout<<left<<setw(5)<<a[i][j];
cout<<"\n";
}
}