#include #include #include #include #include #include #include #include #include #include #include using namespace std; char buff[1000]; int dx[] = {0, 0, 1,-1, 1, 1,-1,-1}; int dy[] = {1,-1, 0, 0, 1,-1, 1,-1}; bool check(vector& vv, int h, int w){ queue q; vector visit( h*w , false); for(int i=0; i= w || new_y < 0 || new_y >= h) continue; if(vv[new_y][new_x] == '1') continue; int next = new_y*w + new_x; if(visit[next] ) continue; visit[next] = true; q.push(next); } } return false; } int main(){ int t; scanf("%d", &t); while(t--){ int n,m; scanf("%d%d", &n, &m); vector v(n); for(int i=0; i r(q),c(q); for(int i=0; i1){ int mid = (lb+ub)/2; vector vv = v; for(int i=0; i vv = v; for(int i=0; i