// 一眼板子题
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int N = 410;
typedef pair<int, int> PII;
queue <PII> q;
int dis[N][N];
int dx[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
int dy[8] = {1, 2, 2, 1, -1, -2, -2, -1};
int n,m,x,y;
void bfs(int x,int y)
{
q.push({x,y});
dis[x][y]=0;
while(q.size()){
auto t=q.front();
q.pop();
for(int i=0;i<8;i++){
int a=t.first+dx[i],b=t.second+dy[i];
if(a<=0||a>n||b<=0||b>m||dis[a][b]!=-1) continue;
dis[a][b]=dis[t.first][t.second]+1;
q.push({a,b});
}
}
}
int main(){
cin>>n>>m>>x>>y;
memset(dis, -1, sizeof dis);
bfs(x,y);
for (int i = 1; i <=n; i ++ ){
for (int j = 1; j <=m; j ++ ){
cout<<dis[i][j]<<" ";
}
cout<<endl;
}
return 0;
}