#include using namespace std; const int maxn=505; int T,n,sx,sy; int a[maxn][maxn],dist[maxn][maxn]; pairque[maxn*maxn]; int calc(int x,int y){ int c=1,s=0,r=0; vectorval; for(int i=x-3;i<=x+3;i++)for(int j=y-3;j<=y+3;j++) if(i>0&&i<=n&&j>0&&j<=n&&abs(i-x)+abs(j-y)<=3&&(i!=x||j!=y)) val.push_back(a[i][j]); sort(val.begin(),val.end()); int cur=a[x][y]; while(c<9){ int v=max(1,(c*c*8-s+cur-1)/cur); r+=v; s+=v*cur; c++; if(!val.empty())cur+=val.back(),val.pop_back(); } return r; } int main(){ scanf("%d",&T); while(T--){ scanf("%d%d%d",&n,&sx,&sy); for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){ scanf("%d",&a[i][j]); dist[i][j]=-1; } dist[sx][sy]=0; int ql=1,qr=0; que[++qr]=make_pair(sx,sy); int ans=int(1e9); while(ql<=qr){ int x=que[ql].first,y=que[ql].second; ans=min(ans,calc(x,y)+dist[x][y]); ql++; for(int i=x-2;i<=x+2;i++)for(int j=y-2;j<=y+2;j++) if(i>0&&i<=n&&j>0&&j<=n&&abs(i-x)+abs(j-y)<=2){ if(dist[i][j]<0){ dist[i][j]=dist[x][y]+1; que[++qr]=make_pair(i,j); } } } printf("%d\n",ans); } return 0; }