#include #define MAXN 505 #define INF 1000000000 #define MOD 1000000007 #define F first #define S second using namespace std; typedef long long ll; typedef pair P; int t,dp[25][25][25][4]; int n,x,y,mp[MAXN][MAXN]; int solve(int x,int y,int z,int cur) { int t=0,cnt=1,food=0,s=cur; while(cnt<9) { t++; food+=s; if(food>=8*cnt*cnt) { if(z>0) { z--; cnt++; s+=3; } else if(y>0) { y--; cnt++; s+=2; } else if(x>0) { x--; cnt++; s++; } else cnt++; } } return t; } int main() { for(int i=0;i<=24;i++) for(int j=0;i+j<=24;j++) for(int k=0;i+j+k<=24;k++) for(int cur=1;cur<=3;cur++) dp[i][j][k][cur]=solve(i,j,k,cur); 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=INF; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { int dist=max(i-x,x-i)+max(j-y,y-j); int a=0,b=0,c=0,d=0; for(int dx=-3;dx<=3;dx++) for(int dy=-3;dy<=3;dy++) { if(dx==0&&dy==0) continue; if(max(dx,-dx)+max(dy,-dy)>3) continue; if(i+dx<1||i+dx>n||j+dy<1||j+dy>n) continue; if(mp[i+dx][j+dy]==1) a++; else if(mp[i+dx][j+dy]==2) b++; else c++; } d=mp[i][j]; ans=min(ans,(dist+1)/2+dp[a][b][c][d]); } printf("%d\n",ans); } return 0; }