#include<bits/stdc++.h>
using namespace std;
char a[185][185];
int dp[185][185],visited[185][185];
int h,w;
int dx[] = {1,1,0,-1,-1,-1,0,1};
int dy[] = {0,-1,-1,-1,0,1,1,1};
void dfs(int x,int y)
{
if(a[x][y]=='1')
{
dp[x][y]=0;
return;
}
int temp1,temp2;
visited[x][y]=1;
for(int k=0;k<8;k++)
{
int nx = x + dx[k];
int ny = y + dy[k];
if(nx>=0&&ny>=0&&nx<h&&ny<w)
{
temp1 = dx[k];
temp2 = dy[k];
if(temp1<0)temp1=(temp1)*(-1);
if(temp2<0)temp2=(temp2)*(-1);
if(visited[nx][ny]==0)
dfs(nx,ny);
dp[x][y] = min(dp[x][y],dp[nx][ny]+temp1+temp2);
}
}
visited[x][y]=0;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>h>>w;
for(int i=0;i<h;i++)
cin>>a[i];
memset(visited,0,sizeof(visited));
for(int i=0;i<h;i++)
for(int j=0;j<w;j++)
dp[i][j]=100000;
for(int i=0;i<h;i++)
{
for(int j=0;j<w;j++)
{
if(dp[i][j]==100000&&a[i][j]!='1')
dfs(i,j);
}
}
for(int i=0;i<h;i++)
{
if(i!=0)
cout<<"\n";
for(int j=0;j<w;j++)
{
if(a[i][j]=='1')
cout<<"0 ";
else
cout<<dp[i][j]<<" ";
}
}
cout<<"\n";
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY2hhciBhWzE4NV1bMTg1XTsKaW50IGRwWzE4NV1bMTg1XSx2aXNpdGVkWzE4NV1bMTg1XTsKaW50IGgsdzsKaW50IGR4W10gPSB7MSwxLDAsLTEsLTEsLTEsMCwxfTsKaW50IGR5W10gPSB7MCwtMSwtMSwtMSwwLDEsMSwxfTsKdm9pZCBkZnMoaW50IHgsaW50IHkpCnsKICAgIGlmKGFbeF1beV09PScxJykKICAgIHsKICAgICAgICBkcFt4XVt5XT0wOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpbnQgdGVtcDEsdGVtcDI7CiAgICB2aXNpdGVkW3hdW3ldPTE7CgogICAgZm9yKGludCBrPTA7azw4O2srKykKICAgIHsKICAgICAgICBpbnQgbnggPSB4ICsgZHhba107CiAgICAgICAgaW50IG55ID0geSArIGR5W2tdOwoKICAgICAgICBpZihueD49MCYmbnk+PTAmJm54PGgmJm55PHcpCiAgICAgICAgewoKICAgICAgICAJdGVtcDEgPSBkeFtrXTsKICAgICAgICAJdGVtcDIgPSBkeVtrXTsKICAgICAgICAJaWYodGVtcDE8MCl0ZW1wMT0odGVtcDEpKigtMSk7CiAgICAgICAgCWlmKHRlbXAyPDApdGVtcDI9KHRlbXAyKSooLTEpOwoKICAgICAgICAgICAgaWYodmlzaXRlZFtueF1bbnldPT0wKQogICAgICAgICAgICBkZnMobngsbnkpOwogICAgICAgICAgICBkcFt4XVt5XSA9IG1pbihkcFt4XVt5XSxkcFtueF1bbnldK3RlbXAxK3RlbXAyKTsKICAgICAgICB9CiAgICB9CiAgICB2aXNpdGVkW3hdW3ldPTA7Cn0KaW50IG1haW4oKQp7CiAgICBpbnQgdDsKICAgIGNpbj4+dDsKICAgIHdoaWxlKHQtLSkKICAgIHsKICAgICAgICBjaW4+Pmg+Pnc7CgogICAgICAgIGZvcihpbnQgaT0wO2k8aDtpKyspCiAgICAgICAgY2luPj5hW2ldOwogICAgICAgIG1lbXNldCh2aXNpdGVkLDAsc2l6ZW9mKHZpc2l0ZWQpKTsKCiAgICAgICAgZm9yKGludCBpPTA7aTxoO2krKykKICAgICAgICBmb3IoaW50IGo9MDtqPHc7aisrKQogICAgICAgIGRwW2ldW2pdPTEwMDAwMDsKCiAgICAgICAgZm9yKGludCBpPTA7aTxoO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8dztqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGRwW2ldW2pdPT0xMDAwMDAmJmFbaV1bal0hPScxJykKICAgICAgICAgICAgICAgIGRmcyhpLGopOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaT0wO2k8aDtpKyspCiAgICAgICAgewogICAgICAgICAgICBpZihpIT0wKQogICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHc7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYoYVtpXVtqXT09JzEnKQogICAgICAgICAgICAgIGNvdXQ8PCIwICI7CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGNvdXQ8PGRwW2ldW2pdPDwiICI7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNvdXQ8PCJcbiI7CiAgICB9CiAgICByZXR1cm4gMDsKfQoK