- #include<bits/stdc++.h> 
- using namespace std; 
- #define MAX 32000 
-   
- char str[200] ; 
- 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; 
- 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(); 
-         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]) 
-             { 
-                 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,num; 
-     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++) 
-         { 
-             scanf("%s",str) ; 
-   
-             for(int k=0;k<m;k++) 
-             { 
-                 arr[j][k]=str[k]-'0'; 
-   
-                 if(arr[j][k]==1) 
-                 { 
-                     p.first=j; 
-                     p.second=k; 
-                     q.push(p); 
-                     visited[j][k]=1; 
-                     dist[j][k]=0; 
-                 } 
-                 else{ 
-                     visited[j][k]=0; 
-              		dist[j][k] = MAX; 
-                 } 
-   
-             } 
-         } 
-   
-         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; 
- } 
-   
-   
-   
-   
-   
-   
-   
-   
-   
				I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBNQVggMzIwMDAKCmNoYXIgc3RyWzIwMF0gOwp0eXBlZGVmIHN0cnVjdCBsbAp7CiAgICBpbnQgaG9yejsKICAgIGludCB2ZXJ0Owp9bW92ZXM7Cgptb3ZlcyBtb3ZlMVs0XTsKCmludCBhcnJbMjEwXVsyMTBdOwppbnQgdmlzaXRlZFsyMTBdWzIxMF07CmludCBkaXN0WzIxMF1bMjEwXTsKaW50IG4sbTsKcXVldWU8IHBhaXI8aW50LGludD4gPiBxOwoKCnZvaWQgaW5pdCgpCnsKICAgIGludCBpLGo7CiAgICBmb3IoaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgZm9yKGo9MDtqPG07aisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoYXJyW2ldW2pdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkaXN0W2ldW2pdPTA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZGlzdFtpXVtqXT1NQVg7CiAgICAgICAgfQogICAgfQp9CgoKdm9pZCBiZnMoKQp7CiAgICBpbnQgaSxqLGsseCx5OwogICAgcGFpcjxpbnQsaW50PiBwLHRlbXA7CiAgICB3aGlsZSghcS5lbXB0eSgpKQogICAgewogICAgICAgIHA9cS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgZm9yKGk9MDtpPDQ7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgeD1wLmZpcnN0K21vdmUxW2ldLmhvcno7CiAgICAgICAgICAgIHk9cC5zZWNvbmQrbW92ZTFbaV0udmVydDsKCiAgICAgICAgICAgIGlmKHg+PTAmJng8biYmeT49MCYmeTxtJiYhdmlzaXRlZFt4XVt5XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmlzaXRlZFt4XVt5XT0xOwogICAgICAgICAgICAgICAgZGlzdFt4XVt5XT1kaXN0W3AuZmlyc3RdW3Auc2Vjb25kXSsxOwogICAgICAgICAgICAgICAgdGVtcC5maXJzdD14OwogICAgICAgICAgICAgICAgdGVtcC5zZWNvbmQ9eTsKICAgICAgICAgICAgICAgIHEucHVzaCh0ZW1wKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBpbnQgdGVzdCxpLGosayxudW07CiAgICBwYWlyPGludCxpbnQ+IHA7CgogICAgbW92ZTFbMF0uaG9yej0wOwogICAgbW92ZTFbMF0udmVydD0tMTsKCiAgICBtb3ZlMVsxXS5ob3J6PTA7CiAgICBtb3ZlMVsxXS52ZXJ0PTE7CgogICAgbW92ZTFbMl0uaG9yej0tMTsKICAgIG1vdmUxWzJdLnZlcnQ9MDsKCiAgICBtb3ZlMVszXS5ob3J6PTE7CiAgICBtb3ZlMVszXS52ZXJ0PTA7CgogICAgY2luPj50ZXN0OwogICAvLyBzY2FuZigiJWxsZCIsJnRlc3QpOwogICAgZm9yKGk9MDtpPHRlc3Q7aSsrKQogICAgewoKICAgICAgICBjaW4+Pm47CiAgICAgICAgY2luPj5tOwogICAgICAgIC8vIHNjYW5mKCIlbGxkIiwmbik7CiAgICAgICAgICAvL3NjYW5mKCIlbGxkIiwmbSk7CiAgICAgICAgZm9yKGo9MDtqPG47aisrKQogICAgICAgIHsKICAgICAgICAgICAgc2NhbmYoIiVzIixzdHIpIDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvcihpbnQgaz0wO2s8bTtrKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFycltqXVtrXT1zdHJba10tJzAnOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZihhcnJbal1ba109PTEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcC5maXJzdD1qOwogICAgICAgICAgICAgICAgICAgIHAuc2Vjb25kPWs7CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHApOwogICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRbal1ba109MTsKICAgICAgICAgICAgICAgICAgICBkaXN0W2pdW2tdPTA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRbal1ba109MDsKICAgICAgICAgICAgIAkJZGlzdFtqXVtrXSA9IE1BWDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgCiAgICAgICAgYmZzKCk7CiAgICAgICAgZm9yKGo9MDtqPG47aisrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGs9MDtrPG07aysrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvL3ByaW50ZigiJWxsZCAiLGRpc3Rbal1ba10pOwogICAgICAgICAgICAgICAgY291dDw8ZGlzdFtqXVtrXTw8IiAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgLy9wcmludGYoIlxuIik7CiAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICB9CgoKICAgIH0KICAgIHJldHVybiAwOwp9CgoKCgoKCgoK