#include<iostream>
using namespace std;
const int N=1010,mod= 998244353;
typedef long long ll;
int w[N][N];
int q[N],rmax[N][N],rmin[N][N];
int A[N],B[N],C[N];
int n,m;
int a,b;
void get_max(int a[N],int b[N],int tot,int k){
int hh=0,tt=-1;
for(int i=1;i<=tot;i++){
if(q[hh]<=i-k) hh++;
while(hh<=tt&&a[q[tt]]<a[i]) tt--;
q[++tt]=i;
b[i]=a[q[hh]];
}
}
void get_min(int a[N],int b[N],int tot,int k){
int hh=0,tt=-1;
for(int i=1;i<=tot;i++){
if(q[hh]<=i-k) hh++;
while(hh<=tt&&a[q[tt]]>a[i]) tt--;
q[++tt]=i;
b[i]=a[q[hh]];
}
}
int main(){
cin>>n>>m>>a>>b;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>w[i][j];
for(int i=1;i<=n;i++){
get_max(w[i],rmax[i],m,b);
get_min(w[i],rmin[i],m,b);
}
ll res=0;
for(int j=b;j<=m;j++)
{
for(int i=1;i<=n;i++) A[i]=rmax[i][j];
get_max(A,B,n,a);
for(int i=1;i<=n;i++) A[i]=rmin[i][j];
get_min(A,C,n,a);
for(int i=a;i<=n;i++)
res=(res+(ll)B[i]*C[i]%mod)%mod;
}
cout<<res<<endl;
return 0;
}
blablabla