#include #include #include #include #include #include using namespace std; int f[4][26][26][26]; int T,n,sx,sy; int map[502][502]; int work(int first,int x1,int x2,int x3){ int sw = 0; int cl = first; int day = 0; int pep = 1; while(pep < 9){ ++ day; sw += cl; int ned = 8 * pep * pep; if(sw >= ned){ if(pep <= x3)cl += 3; else if(pep <= x3+x2) cl+=2; else if(pep <= x3+x2+x1) cl += 1; ++pep; } } /* for(int i=1;i<=8;++i){ int ned = 8 * i * i - sw; int ned_day = (ned-1) / cl + 1; if(ned <= 0)ned_day = 1; day += ned_day; sw += ned_day * cl; if(i <= x3)cl += 3; else if(i <= x3+x2) cl+=2; else if(i <= x3+x2+x1) cl += 1; }*/ return day; } int get(){ char t=getchar(); while(t<'0'||t>'9')t=getchar(); int x = 0; while(t>='0'&&t<='9'){ x*=10; x+=t-'0'; t=getchar(); } return x; } int get_ans(int x,int y){ int x1,x2,x3; x1 = x2 = x3 = 0; //printf("try : %d %d\n",x,y); for(int dx = -3; dx <= 3; dx+=1)for(int dy = -3; dy <= 3; dy+=1){ if(abs(dx)+abs(dy) > 3)continue; int nx = x + dx; int ny = y + dy; if(nx > n || nx <= 0 || ny > n || ny <= 0)continue; if(dx == 0 && dy == 0)continue; //printf("%d %d %d\n",nx,ny,map[nx][ny]); if(map[nx][ny] == 1)++x1; else if(map[nx][ny] == 2)++x2; else if(map[nx][ny] == 3)++x3; } int z = map[x][y]; //if(x == 6 && y == 7)printf("%d %d %d %d %d\n",z,x1,x2,x3,f[z][x1][x2][x3]); //printf("%d %d %d %d %d\n",z,x1,x2,x3,f[z][x1][x2][x3]); return f[z][x1][x2][x3]; } int main(){ // freopen("D.in","r",stdin); for(int i=1;i<=3;++i) for(int j=0;j<=24;++j) for(int k=0;j+k<=24;++k) for(int z=0;j+k+z<=24;++z) f[i][j][k][z]=work(i,j,k,z); T=get(); for(int ii=1;ii<=T;++ii){ n = get(); sx = get(); sy = get(); for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)map[i][j] = get(); int ans = get_ans(sx,sy); for(int i=1;i<=n;++i)for(int j=1;j<=n;++j){ int mve_day = (abs(i - sx) + abs(j - sy) + 1)/2; //mve_day = mve_day + 1; if(i==sx && j == sy) mve_day = 0; //int ned_day = get_ans(i,j) + mve_day; //if(ans > ned_day)printf("%d %d %d %d\n", ned_day, i, j, mve_day); ans = min(ans, get_ans(i,j) + mve_day); } printf("%d\n",ans); } //printf("%d\n", f[1][0][0][0]); return 0; }