#include <iostream>
#include<cstdio>
#include<queue>
#include<string>
#define MAX 200
using namespace std;
int n, m;
int output_grid[200][200];
char input_grid[200][200];
struct node{
int x;
int y;
int dist;
};
void bfs(){
queue<node> q;
bool visited[MAX][MAX];
int x,y;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
visited[i][j]=false;
node temp,temp1;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(input_grid[i][j]=='1'){
visited[i][j]=true;
temp.x=i;
temp.y=j;
temp.dist=0;
q.push(temp);
}
}
}
while(!q.empty()){
temp=q.front();
q.pop();
output_grid[temp.x][temp.y] = temp.dist;
//check for bounds before pushing
if(temp.y-1 >=0 && !visited[temp.x][temp.y-1]){
temp1.x = temp.x;
temp1.y = temp.y-1;
temp1.dist = temp.dist+1;
q.push(temp1);
visited[temp1.x][temp1.y]=true;
}
if(temp.x-1 >=0 && !visited[temp.x-1][temp.y]){
temp1.x = temp.x-1;
temp1.y = temp.y;
temp1.dist = temp.dist+1;
q.push(temp1);
visited[temp1.x][temp1.y]=true;
}
if(temp.y+1 <=n && !visited[temp.x][temp.y+1]){
temp1.x = temp.x;
temp1.y = temp.y+1;
temp1.dist = temp.dist+1;
q.push(temp1);
visited[temp1.x][temp1.y]=true;
}
if(temp.x+1 <=m && !visited[temp.x+1][temp.y]){
temp1.x = temp.x+1;
temp1.y = temp.y;
temp1.dist = temp.dist+1;
q.push(temp1);
visited[temp1.x][temp1.y]=true;
}
}
}
int main() {
int cases;
scanf("%d",&cases);
while(cases--){
char temp[200];
scanf("%d %d",&m,&n);
for(int i=0;i<m;i++){
scanf("%s",temp);
for(int j=0;j<n;j++){
input_grid[i][j]=temp[j];
}
}
bfs();
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
printf("%d ",output_grid[i][j]);
printf("\n");
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxjc3RkaW8+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxzdHJpbmc+CiNkZWZpbmUgTUFYIDIwMAp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG4sIG07CmludCBvdXRwdXRfZ3JpZFsyMDBdWzIwMF07CmNoYXIgaW5wdXRfZ3JpZFsyMDBdWzIwMF07CgpzdHJ1Y3Qgbm9kZXsKCWludCB4OwoJaW50IHk7CglpbnQgZGlzdDsKCX07CgkKCnZvaWQgYmZzKCl7CglxdWV1ZTxub2RlPiBxOwoJYm9vbCB2aXNpdGVkW01BWF1bTUFYXTsKCWludCB4LHk7CgkKCWZvcihpbnQgaT0wO2k8bTtpKyspCgkJZm9yKGludCBqPTA7ajxuO2orKykKCQkJdmlzaXRlZFtpXVtqXT1mYWxzZTsKCW5vZGUgdGVtcCx0ZW1wMTsKCWZvcihpbnQgaT0wO2k8bTtpKyspewoJCWZvcihpbnQgaj0wO2o8bjtqKyspewoJCQlpZihpbnB1dF9ncmlkW2ldW2pdPT0nMScpewoJCQkJdmlzaXRlZFtpXVtqXT10cnVlOwoJCQkJdGVtcC54PWk7CgkJCQl0ZW1wLnk9ajsKCQkJCXRlbXAuZGlzdD0wOwoJCQkJcS5wdXNoKHRlbXApOwoJCQl9CgkJfQoJfQoJCgl3aGlsZSghcS5lbXB0eSgpKXsKCQl0ZW1wPXEuZnJvbnQoKTsKCQlxLnBvcCgpOwoJCW91dHB1dF9ncmlkW3RlbXAueF1bdGVtcC55XSA9IHRlbXAuZGlzdDsKCQkKCQkvL2NoZWNrIGZvciBib3VuZHMgYmVmb3JlIHB1c2hpbmcKCQkKCQlpZih0ZW1wLnktMSA+PTAgJiYgIXZpc2l0ZWRbdGVtcC54XVt0ZW1wLnktMV0pewoJCQl0ZW1wMS54ID0gdGVtcC54OwoJCQl0ZW1wMS55ID0gdGVtcC55LTE7CgkJCXRlbXAxLmRpc3QgPSB0ZW1wLmRpc3QrMTsKCQkJcS5wdXNoKHRlbXAxKTsKCQkJdmlzaXRlZFt0ZW1wMS54XVt0ZW1wMS55XT10cnVlOwoJCX0KCQkKCQlpZih0ZW1wLngtMSA+PTAgJiYgIXZpc2l0ZWRbdGVtcC54LTFdW3RlbXAueV0pewoJCQl0ZW1wMS54ID0gdGVtcC54LTE7CgkJCXRlbXAxLnkgPSB0ZW1wLnk7CgkJCXRlbXAxLmRpc3QgPSB0ZW1wLmRpc3QrMTsKCQkJcS5wdXNoKHRlbXAxKTsKCQkJdmlzaXRlZFt0ZW1wMS54XVt0ZW1wMS55XT10cnVlOwoJCX0KCQkKCQlpZih0ZW1wLnkrMSA8PW4gJiYgIXZpc2l0ZWRbdGVtcC54XVt0ZW1wLnkrMV0pewoJCQl0ZW1wMS54ID0gdGVtcC54OwoJCQl0ZW1wMS55ID0gdGVtcC55KzE7CgkJCXRlbXAxLmRpc3QgPSB0ZW1wLmRpc3QrMTsKCQkJcS5wdXNoKHRlbXAxKTsKCQkJdmlzaXRlZFt0ZW1wMS54XVt0ZW1wMS55XT10cnVlOwoJCX0KCQkKCQlpZih0ZW1wLngrMSA8PW0gJiYgIXZpc2l0ZWRbdGVtcC54KzFdW3RlbXAueV0pewoJCQl0ZW1wMS54ID0gdGVtcC54KzE7CgkJCXRlbXAxLnkgPSB0ZW1wLnk7CgkJCXRlbXAxLmRpc3QgPSB0ZW1wLmRpc3QrMTsKCQkJcS5wdXNoKHRlbXAxKTsKCQkJdmlzaXRlZFt0ZW1wMS54XVt0ZW1wMS55XT10cnVlOwoJCX0KCQkKCX0KCQkKCQp9CgppbnQgbWFpbigpIHsKCWludCBjYXNlczsKCXNjYW5mKCIlZCIsJmNhc2VzKTsKCXdoaWxlKGNhc2VzLS0pewoJCWNoYXIgdGVtcFsyMDBdOwoJCXNjYW5mKCIlZCAlZCIsJm0sJm4pOwoJCWZvcihpbnQgaT0wO2k8bTtpKyspewoJCQkJc2NhbmYoIiVzIix0ZW1wKTsKCQkJCWZvcihpbnQgaj0wO2o8bjtqKyspewoJCQkJCWlucHV0X2dyaWRbaV1bal09dGVtcFtqXTsKCQkJCX0KCQl9CgkKCQliZnMoKTsJCQkKCQlmb3IoaW50IGk9MDtpPG07aSsrKXsKCQkJZm9yKGludCBqPTA7ajxuO2orKykKCQkJCXByaW50ZigiJWQgIixvdXRwdXRfZ3JpZFtpXVtqXSk7CgkJCXByaW50ZigiXG4iKTsKCQl9Cgl9CglyZXR1cm4gMDsKfQ==
MQoxMCAxMAowMDAxMDAxMDEwCjAwMDEwMDEwMTAKMDAwMTAwMTAxMAowMDAxMDAxMDEwCjAwMDEwMDEwMTAKMDAwMTAwMTAxMAowMDAxMDAxMDEwCjAwMDEwMDEwMTAKMDAwMTAwMTAxMAowMDAxMDAxMDEw
1
10 10
0001001010
0001001010
0001001010
0001001010
0001001010
0001001010
0001001010
0001001010
0001001010
0001001010