#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=n;i>=a;i--)
#define all(x) (x).begin(),(x).end()
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
#define fi first
#define se second
#define heap priority_queue
#define endl '\n'
#define pb push_back
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int inf = 0x3f3f3f3f;
const int mod = 998244353;
const int N = 1100;
const int M = N*N;
struct node
{
int a,b,t;
bool operator<(const node& b ) const{
return this -> t < b.t;
}
};
vector<node> a;
ll f[N];
int qmi (int a,int b = mod -2 , int p = mod)
{
int ans = 1;
for (;b;b>>=1)
{
if (b&1) ans = (ll) ans *a%p;
a = (ll )a*a%p;
}
return ans ;
}
int inv[M+10];
int main()
{
int n,m;cin >> n >> m;
a.resize(M);
int idx = 0;
rep(i,1,n) rep(j,1,m)
{
int b;
scanf("%d",&b);
a[idx++] = {i,j,b};
}
pii ans ;
cin >> ans.fi >> ans.se;
inv[1] = 1;
rep(i,2,M)
{
int p = mod;
inv[i] = (ll)(p- p/i)*inv[p%i]%p;
}
sort(a.begin(), a.begin() + idx) ;
int sz = idx;
ll sumx2 = 0,sumy2=0,sumx = 0,sumy = 0 ;
int j ;
for (int i = 0;i < sz ;i = j )
{
j = i;
while (j < sz && a[i].t == a[j].t ) j++;
for (int k = i;k<j;k ++ )
{
ll x = a[k].a , y =a[k].b;
f[k] = ((ll) sumx2 + x*x%mod*i%mod +
sumy2 + y*y*i%mod - 2*sumx*x%mod - 2*sumy*y%mod + mod)%mod;
f[k] = (f[k] + f[i-1])%mod;
f[k] = f[k]*inv[i]%mod;
if (x == ans.fi && y == ans.se )
{
cout<<f[k] <<endl;
return 0;
}
}
for (int k = i;k< j;k ++ )
{
ll x = a[k].a , y =a[k].b;
sumx2 += x*x;sumx2%= mod;
sumy2 += y*y;sumy2%=mod;
sumx += x;sumx%=mod;
sumy += y;sumy%=mod;
f[k] += f[k-1];
f[k]%= mod;
}
}
return 0;
}