#include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const int maxn = 2000 + 100; const int mod = 1e9 + 7; #define f(x) (x+x) int a[505][505]; int x, y, n; int ans; int vis[505][505]; int dx[] = {3, -3, 2, 2, 2, -2, -2, -2, 1 ,1 ,1, 1, 1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0}; int dy[] = {0, 0, 0, 1, -1, 0, 1, -1, 0, 1, 2, -1, -2, 0, 1, 2, -1, -2, 1, 2, 3, -1, -2, -3}; int cal(int t1, int t2, int t3, int t4){ return fabs(t1-t3)+fabs(t2-t4); } bool in(int x, int y){ return x >= 0 && x < n && y>=0 && y < n; } vector> pp; int solve(int xx, int yy){ int dd = cal(x, y, xx, yy); for(int i = 0; i < pp.size(); ++i) vis[pp[i][0]][pp[i][1]] = 0; pp.clear(); int ret = (dd-1)/2+1; pp.push_back({xx, yy}); vis[xx][yy] = 1; int sum = 0; if(xx == x && yy == y) sum = a[x][y]; int t = 8*8*8; int k = a[xx][yy]; int p = 1; while(sum <= t){ ret++; sum += k; // cout << ret << " " << sum << endl; if(sum >= 8*p*p){ p++; int m = 0, posx = -1, posy = -1; for(int i = 0; i < 24; ++i){ if(in(xx+dx[i], yy+dy[i]) && !vis[xx+dx[i]][yy+dy[i]]){ if(m < a[xx+dx[i]][yy+dy[i]]){ m = a[xx+dx[i]][yy+dy[i]]; posx = xx+dx[i]; posy = yy+dy[i]; } } } if(posx == -1) continue; pp.push_back({posx, posy}); vis[posx][posy] = 1; k += a[posx][posy]; } } return ret; } int main(){ int t; scanf("%d", &t); while(t--){ scanf("%d%d%d", &n, &x, &y); --x, --y; for(int i = 0; i < n; ++i){ for(int j = 0; j < n; ++j){ scanf("%d", &a[i][j]); } } ans = 999; for(int i = 0; i < n; ++i){ for(int j = 0; j < n; ++j){ ans = min(ans, solve(i, j)); } } printf("%d\n", ans); } return 0; }