#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
int n,m;
char c;
queue<int>q;
cin>>n>>m;
int a[n][m]={0};
for (int i=0;i<n;++i){
for (int j=0;j<m;++j)
{
char c;
cin>>c;
//make a queue for all the co-ordinates with value 1;
if(c=='1')
{
a[i][j]=0;
q.push(i);
q.push(j);
}
else
a[i][j]=INT_MAX;
}
}
while(!q.empty())
{
int x=q.front();q.pop();
int y=q.front();q.pop();
//incease in all possible directions ^,↓,↔
int dist=a[x][y]+1;
//up
if(x-1>=0&&dist<a[x-1][y])
a[x-1][y]=dist;q.push(x-1);q.push(y);
//down
if(x+1<n&&dist<a[x+1][y])
a[x+1][y]=dist;q.push(x+1);q.push(y);
//left
if(y-1>=0&&dist<a[x][y-1])
a[x][y-1]=dist;q.push(x);q.push(y-1);
//right
if(y+1<m&&dist<a[x][y+1])
a[x][y+1]=dist;q.push(x);q.push(y+1);
}
for (int i=0;i<n;++i)
{
for (int j=0;j<m;++j)
{
cout<<a[i][j]<<" ";
cout<<endl;
}
}
cout<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1haW4oKXsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJaW50IHQ7CgljaW4+PnQ7Cgl3aGlsZSh0LS0pCgl7CgkJaW50IG4sbTsKCQljaGFyIGM7CgkJcXVldWU8aW50PnE7CgkJY2luPj5uPj5tOwoJCWludCBhW25dW21dPXswfTsKCQlmb3IgKGludCBpPTA7aTxuOysraSl7CgkJCWZvciAoaW50IGo9MDtqPG07KytqKQoJCQkJewoJCQkJCWNoYXIgYzsKCQkJCQljaW4+PmM7CgkJCQkJLy9tYWtlIGEgcXVldWUgZm9yIGFsbCB0aGUgY28tb3JkaW5hdGVzIHdpdGggdmFsdWUgMTsKCQkJCQlpZihjPT0nMScpCgkJCQkJewoJCQkJCQlhW2ldW2pdPTA7CgkJCQkJCXEucHVzaChpKTsKCQkJCQkJcS5wdXNoKGopOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJCWFbaV1bal09SU5UX01BWDsKCQkJCX0KCQl9CgkJd2hpbGUoIXEuZW1wdHkoKSkKCQl7CgkJCWludCB4PXEuZnJvbnQoKTtxLnBvcCgpOwoJCQlpbnQgeT1xLmZyb250KCk7cS5wb3AoKTsKCQkJLy9pbmNlYXNlIGluIGFsbCBwb3NzaWJsZSBkaXJlY3Rpb25zIF4s4oaTLOKGlAoJCQlpbnQgZGlzdD1hW3hdW3ldKzE7CgkJCS8vdXAKCQkJaWYoeC0xPj0wJiZkaXN0PGFbeC0xXVt5XSkKCQkJCWFbeC0xXVt5XT1kaXN0O3EucHVzaCh4LTEpO3EucHVzaCh5KTsKCQkJLy9kb3duCgkJCWlmKHgrMTxuJiZkaXN0PGFbeCsxXVt5XSkKCQkJCWFbeCsxXVt5XT1kaXN0O3EucHVzaCh4KzEpO3EucHVzaCh5KTsKCQkJLy9sZWZ0CgkJCWlmKHktMT49MCYmZGlzdDxhW3hdW3ktMV0pCgkJCQlhW3hdW3ktMV09ZGlzdDtxLnB1c2goeCk7cS5wdXNoKHktMSk7CgkJCS8vcmlnaHQKCQkJaWYoeSsxPG0mJmRpc3Q8YVt4XVt5KzFdKQoJCQkJYVt4XVt5KzFdPWRpc3Q7cS5wdXNoKHgpO3EucHVzaCh5KzEpOwoJCX0KCQlmb3IgKGludCBpPTA7aTxuOysraSkKCQl7CgkJCWZvciAoaW50IGo9MDtqPG07KytqKQoJCQl7CgkJCQljb3V0PDxhW2ldW2pdPDwiICI7CgkJCQljb3V0PDxlbmRsOwoJCQl9CgkJfQoJCWNvdXQ8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==