#include using namespace std; const int maxn=21111; int dp[30][30][30][4],a[30],b[505][505],n,X,Y; int solve(int x,int y,int z,int w){ if (dp[x][y][z][w]!=-1) return dp[x][y][z][w]; int tot=0; a[++tot]=w; for (int i=1;i<=x;i++) a[++tot]=3; for (int i=1;i<=y;i++) a[++tot]=2; for (int i=1;i<=z;i++) a[++tot]=1; int res=0,food=0,sum=a[1]; for (int i=1;i<=8;i++){ int day=max(1,(8*i*i-food+sum-1)/sum); res+=day; food+=day*sum; sum+=a[i+1]; } return dp[x][y][z][w]=res; } bool valid(int x,int y){ return x>=1&&x<=n&&y>=1&&y<=n; } void solve(){ cin >> n >> X >> Y; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) cin >> b[i][j]; int ans=1e9; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++){ int x=0,y=0,z=0; for (int dx=-3;dx<=3;dx++) for (int dy=-3;dy<=3;dy++){ int dis=abs(dx)+abs(dy); if (dis>=1&&dis<=3&&valid(i+dx,j+dy)){ int val=b[i+dx][j+dy]; if (val==3) x++; else if (val==2) y++; else z++; } } ans=min(ans,solve(x,y,z,b[i][j])+(abs(i-X)+abs(j-Y)+1)/2); } cout << ans << endl; } int main(){ memset(dp,-1,sizeof(dp)); int _; cin >> _; while (_--) solve(); return 0; }