#include<bits/stdc++.h>
using namespace std;
struct topp{
int x,y,t;
};
int n,m,l,r,w[402][402],dx[8]={-2,-2,-1,1,2,2,1,-1},dy[8]={-1,1,2,2,1,-1,-2,-2};
queue<topp>q;
int main(){
scanf("%d%d%d%d",&n,&m,&l,&r);
memset(w,255,sizeof w);
q.push(topp{l,r,0});
while(!q.empty()){
int nx=q.front().x,ny=q.front().y,nt=q.front().t;
q.pop();
if(nx<1||nx>n||ny<1||ny>n||w[nx][ny]!=-1)continue;
w[nx][ny]=nt;
for(int i=0;i<8;i++)q.push(topp{nx+dx[i],ny+dy[i],nt+1});
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)printf("%d ",w[i][j]);
printf("\n");
}
return 0;
}