- #include<bits/stdc++.h> 
- using namespace std; 
- #define MAX 32000 
-   
- typedef struct ll 
- { 
-     int horz; 
-     int vert; 
- }moves; 
-   
- moves move1[4]; 
-   
- int arr[210][210]; 
- int visited[210][210]; 
- int dist[210][210]; 
- int n,m; 
- char num[210]; 
- queue< pair<int,int> > q; 
-   
-   
- void init() 
- { 
-     int i,j; 
-     for(i=0;i<n;i++) 
-     { 
-         for(j=0;j<m;j++) 
-         { 
-             if(arr[i][j]) 
-             { 
-                 dist[i][j]=0; 
-             } 
-             else 
-                 dist[i][j]=MAX; 
-         } 
-     } 
- } 
-   
-   
- void bfs() 
- { 
-     int i,j,k,x,y; 
-     pair<int,int> p,temp; 
-     while(!q.empty()) 
-     { 
-         p=q.front(); 
-         q.pop(); 
-         visited[p.first][p.second]=1; 
-   
-         for(i=0;i<4;i++) 
-         { 
-             x=p.first+move1[i].horz; 
-             y=p.second+move1[i].vert; 
-   
-             if(x>=0&&x<n&&y>=0&&y<m&&!visited[x][y]&&dist[x][y]!=0) 
-             { 
-                 visited[x][y]=1; 
-                 dist[x][y]=dist[p.first][p.second]+1; 
-                 temp.first=x; 
-                 temp.second=y; 
-                 q.push(temp); 
-             } 
-         } 
-     } 
- } 
-   
- int main() 
- { 
-     int test,i,j,k; 
-     pair<int,int> p; 
-   
-     move1[0].horz=0; 
-     move1[0].vert=-1; 
-   
-     move1[1].horz=0; 
-     move1[1].vert=1; 
-   
-     move1[2].horz=-1; 
-     move1[2].vert=0; 
-   
-     move1[3].horz=1; 
-     move1[3].vert=0; 
-   
-     cin>>test; 
-    // scanf("%lld",&test); 
-     for(i=0;i<test;i++) 
-     { 
-   
-         cin>>n; 
-         cin>>m; 
-         // scanf("%lld",&n); 
-           //scanf("%lld",&m); 
-         for(j=0;j<n;j++) 
-         { 
-             cin>>num; 
-              //scanf("%lld",&num); 
-             for(k=0;k<m;k++) 
-             { 
-                 arr[j][k]=num[k]-'0'; 
-                 if(arr[j][k]==1) 
-                 { 
-                     p.first=j; 
-                     p.second=k; 
-                     q.push(p); 
-                     visited[j][k]=0; 
-                     dist[j][k]=0; 
-                 } 
-                 else{ 
-                     visited[j][k]=0; 
-                     dist[j][k]=MAX; 
-                 } 
-   
-             } 
-         } 
-         //cout<<"reached"<<endl; 
-         bfs(); 
-         for(j=0;j<n;j++) 
-         { 
-             for(k=0;k<m;k++) 
-             { 
-                 //printf("%lld ",dist[j][k]); 
-                 cout<<dist[j][k]<<" "; 
-             } 
-            //printf("\n"); 
-            cout<<endl; 
-         } 
-   
-   
-     } 
-     return 0; 
- } 
-   
-   
-   
-   
-   
-   
-   
-   
-   
				I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBNQVggMzIwMDAKCnR5cGVkZWYgc3RydWN0IGxsCnsKICAgIGludCBob3J6OwogICAgaW50IHZlcnQ7Cn1tb3ZlczsKCm1vdmVzIG1vdmUxWzRdOwoKaW50IGFyclsyMTBdWzIxMF07CmludCB2aXNpdGVkWzIxMF1bMjEwXTsKaW50IGRpc3RbMjEwXVsyMTBdOwppbnQgbixtOwpjaGFyIG51bVsyMTBdOwpxdWV1ZTwgcGFpcjxpbnQsaW50PiA+IHE7CgoKdm9pZCBpbml0KCkKewogICAgaW50IGksajsKICAgIGZvcihpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBmb3Ioaj0wO2o8bTtqKyspCiAgICAgICAgewogICAgICAgICAgICBpZihhcnJbaV1bal0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRpc3RbaV1bal09MDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBkaXN0W2ldW2pdPU1BWDsKICAgICAgICB9CiAgICB9Cn0KCgp2b2lkIGJmcygpCnsKICAgIGludCBpLGosayx4LHk7CiAgICBwYWlyPGludCxpbnQ+IHAsdGVtcDsKICAgIHdoaWxlKCFxLmVtcHR5KCkpCiAgICB7CiAgICAgICAgcD1xLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICB2aXNpdGVkW3AuZmlyc3RdW3Auc2Vjb25kXT0xOwoKICAgICAgICBmb3IoaT0wO2k8NDtpKyspCiAgICAgICAgewogICAgICAgICAgICB4PXAuZmlyc3QrbW92ZTFbaV0uaG9yejsKICAgICAgICAgICAgeT1wLnNlY29uZCttb3ZlMVtpXS52ZXJ0OwoKICAgICAgICAgICAgaWYoeD49MCYmeDxuJiZ5Pj0wJiZ5PG0mJiF2aXNpdGVkW3hdW3ldJiZkaXN0W3hdW3ldIT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2aXNpdGVkW3hdW3ldPTE7CiAgICAgICAgICAgICAgICBkaXN0W3hdW3ldPWRpc3RbcC5maXJzdF1bcC5zZWNvbmRdKzE7CiAgICAgICAgICAgICAgICB0ZW1wLmZpcnN0PXg7CiAgICAgICAgICAgICAgICB0ZW1wLnNlY29uZD15OwogICAgICAgICAgICAgICAgcS5wdXNoKHRlbXApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGludCB0ZXN0LGksaixrOwogICAgcGFpcjxpbnQsaW50PiBwOwoKICAgIG1vdmUxWzBdLmhvcno9MDsKICAgIG1vdmUxWzBdLnZlcnQ9LTE7CgogICAgbW92ZTFbMV0uaG9yej0wOwogICAgbW92ZTFbMV0udmVydD0xOwoKICAgIG1vdmUxWzJdLmhvcno9LTE7CiAgICBtb3ZlMVsyXS52ZXJ0PTA7CgogICAgbW92ZTFbM10uaG9yej0xOwogICAgbW92ZTFbM10udmVydD0wOwoKICAgIGNpbj4+dGVzdDsKICAgLy8gc2NhbmYoIiVsbGQiLCZ0ZXN0KTsKICAgIGZvcihpPTA7aTx0ZXN0O2krKykKICAgIHsKCiAgICAgICAgY2luPj5uOwogICAgICAgIGNpbj4+bTsKICAgICAgICAvLyBzY2FuZigiJWxsZCIsJm4pOwogICAgICAgICAgLy9zY2FuZigiJWxsZCIsJm0pOwogICAgICAgIGZvcihqPTA7ajxuO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbj4+bnVtOwogICAgICAgICAgICAgLy9zY2FuZigiJWxsZCIsJm51bSk7CiAgICAgICAgICAgIGZvcihrPTA7azxtO2srKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYXJyW2pdW2tdPW51bVtrXS0nMCc7CiAgICAgICAgICAgICAgICBpZihhcnJbal1ba109PTEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcC5maXJzdD1qOwogICAgICAgICAgICAgICAgICAgIHAuc2Vjb25kPWs7CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHApOwogICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRbal1ba109MDsKICAgICAgICAgICAgICAgICAgICBkaXN0W2pdW2tdPTA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRbal1ba109MDsKICAgICAgICAgICAgICAgICAgICBkaXN0W2pdW2tdPU1BWDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vY291dDw8InJlYWNoZWQiPDxlbmRsOwogICAgICAgIGJmcygpOwogICAgICAgIGZvcihqPTA7ajxuO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihrPTA7azxtO2srKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy9wcmludGYoIiVsbGQgIixkaXN0W2pdW2tdKTsKICAgICAgICAgICAgICAgIGNvdXQ8PGRpc3Rbal1ba108PCIgIjsKICAgICAgICAgICAgfQogICAgICAgICAgIC8vcHJpbnRmKCJcbiIpOwogICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgfQoKCiAgICB9CiAgICByZXR1cm4gMDsKfQoKCgoKCgoKCg==