#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define str string
struct node{
int x,y;
};
queue<node> q;
int n,m,x,y;
int a[405][405];
const int dx[]={-2,2,-2,2,-1,-1,1,1},dy[]={1,1,-1,-1,-2,2,-2,2};
void bfs(){
node front={x,y};
q.push(front);
a[x][y]=0;
while(!q.empty()){
node now=q.front();
for(int i=0;i<8;i++){
int tx=now.x+dx[i],ty=now.y+dy[i];
if(tx<1||tx>n||ty<1||ty>m||a[tx][ty]!=-1)continue;
q.push({tx,ty});
a[tx][ty]=a[now.x][now.y]+1;
}
q.pop();
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>n>>m>>x>>y;
memset(a,-1,sizeof(a));
bfs();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<left<<setw(5)<<a[i][j];
}
cout<<endl;
}
return 0;
}