#include #include #include #include #define maxn 505 using namespace std; int n,x,y; int mp[maxn][maxn],num[4]; int solve(int x,int y) { num[1]=num[2]=num[3]=0; int cnt=0; for (int i=0;i<=3;i++) for (int j=0;j<=3-i;j++) { if (i==0 && j==0) continue; if (i==0 && j!=0) { if (y+j<=n) num[mp[x][y+j]]++,cnt++; if (y-j>=1) num[mp[x][y-j]]++,cnt++; } else if (i!=0 && j==0) { if (x+i<=n) num[mp[x+i][y]]++,cnt++; if (x-i>=1) num[mp[x-i][y]]++,cnt++; } else { if (x+i<=n && y+j<=n) num[mp[x+i][y+j]]++,cnt++; if (x-i>=1 && y+j<=n) num[mp[x-i][y+j]]++,cnt++; if (x+i<=n && y-j>=1) num[mp[x+i][y-j]]++,cnt++; if (x-i>=1 && y-j>=1) num[mp[x-i][y-j]]++,cnt++; } } int worker=1,s=mp[x][y],i=3,ret=0,sum=0; while (worker<9) { int ti=(8*worker*worker-sum)/s+((8*worker*worker-sum)%s?1:0); sum+=ti*s; ret+=ti; while (i>=1 && num[i]==0) i--; if (i!=0) num[i]--,s+=i; worker++; } //printf("%d %d : %d\n",x,y,cnt); return ret; } int main() { int T; scanf("%d",&T); while (T--) { scanf("%d%d%d",&n,&x,&y); for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) scanf("%d",&mp[i][j]); int ans=0x7fffffff; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) ans=min(ans,solve(i,j)+(abs(i-x)+abs(j-y))/2+(abs(i-x)+abs(j-y))%2); printf("%d\n",ans); } return 0; }