#include<bits/stdc++.h>
using namespace std;
int n,x,y,ans;
const int N=101;
int a[N][N],vis[N][N];
void dfs(int x,int y,int already){
//cout<<x<<" "<<y<<" "<<already<<"\n";
ans=max(already,ans);
int nx,ny;
for(int i=x+1;i<=n;i++){
if(vis[i][y]){
break;
}
if(a[i][y]==0&&!vis[i][y]){
nx=i,ny=y;
vis[nx][ny]=1;
already+=i-x;
dfs(nx,ny,already);
already-=i-x;
vis[nx][ny]=0;
break;
}
}
for(int i=x-1;i>=1;i--){
if(vis[i][y]){
break;
}
if(a[i][y]==0&&!vis[i][y]){
nx=i,ny=y;
vis[nx][ny]=1;
already+=x-i;
dfs(nx,ny,already);
already-=x-i;
vis[nx][ny]=0;
break;
}
}
for(int i=y+1;i<=n;i++){
if(vis[x][i]){
break;
}
if(a[x][i]==0&&!vis[x][i]){
nx=x,ny=i;
vis[nx][ny]=1;
already+=i-y;
dfs(nx,ny,already);
already-=i-y;
vis[nx][ny]=0;
break;
}
}
for(int i=y-1;i>=1;i--){
if(vis[x][i]){
break;
}
if(a[x][i]==0&&!vis[x][i]){
nx=x,ny=i;
vis[nx][ny]=1;
already+=y-i;
dfs(nx,ny,already);
already-=y-i;
vis[nx][ny]=0;
break;
}
}
}
signed main(){
cin>>n>>x>>y;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++) cin>>a[i][j];
}
vis[x][y]=1;
dfs(x,y,0);
cout<<ans;
return 0;
}