//Time 0ms,Memory 504KB
#include<iostream>
#include<cstring>
using namespace std;
int v[25][25],p[25][25],m,n;
int dfs(int cur,int d)
{
int x,y;
x=cur/m+1;y=cur%m+1;
if(cur>=n*m) return 1;
if(y+d<1 || y+d>m)
{
if(x==n)
{
if(p[x][y]==0)
return 1;
else return 0;
}
if(x==n-1)
{
if(p[x][y]==0)
{
if(p[x+1][y]!=0) return 0;
return 1;
}
if(p[x][y]==1)
{
if(p[x+1][y]!=1) return 0;
v[x+1][y]=1;p[x+1][y]=p[x][y]=0;
return 1;
}
else return 0;
}
if(p[x][y]==0)
{
if(y-d>0 && y-d<=m && p[x+1][y-d]>1) return 0;
}
else if(p[x][y]==1)
{
if(y-d>0 && y-d<=m && p[x+1][y-d]==0) return 0;
}
else return 0;
if(p[x+1][y]-p[x][y]<0 || p[x+1][y]-p[x][y]>1) return 0;
p[x+1][y-d]-=p[x][y];p[x+2][y]-=p[x+1][y];v[x+1][y]=p[x][y];v[x+2][y]=p[x+1][y]-p[x][y];p[x+3][y]-=p[x+1][y]-p[x][y];p[x+2][y-d]-=p[x+1][y]-p[x][y];
int f=dfs(cur+2*m,-1*d);
if(f) return 1;
else
{
p[x+1][y-d]+=p[x][y];p[x+2][y]+=p[x+1][y];v[x+1][y]=0;v[x+2][y]=0;p[x+3][y]+=p[x+1][y]-p[x][y];p[x+2][y-d]+=p[x+1][y]-p[x][y];
return 0;
}
}
if(x==n)
{
if(y-d>0 && y-d<=m && p[x][y-d]) return 0;
}
if(p[x][y]==0)
{
if(x-1>0 && y+d>0 && y+d<=m && p[x-1][y+d]) return 0;
if(x+1<=n && y-d>0 && y-d<=m && p[x+1][y-d]>1) return 0;
if(x==n-1)
{
if(y-d>0 && y-d<=m && p[x+1][y-d]) return 0;
}
return dfs(cur+d,d);
}
else if(p[x][y]==1)
{
if(x==1)
{
p[x][y]--;
if(p[x][y+d]>0)
{
if(x+1<=n && y-d>0 && y-d<=m && p[x+1][y-d]>1) ;
else if(y+d+d>0 && y+d+d<=m && p[x][y+d+d]==0) ;
else if(x+1<=n && p[x+1][y+d]==0) ;
else
{
p[x+1][y+d]--;p[x][y+d+d]--;p[x][y+d]--;v[x][y+d]=1;
int f=dfs(cur+d,d);
if(f) return 1;
p[x+1][y+d]++;p[x][y+d+d]++;p[x][y+d]++;v[x][y+d]=0;
}
}
if(x+1<=n && p[x+1][y]>0)
{
if(x+1<=n && y-d>0 && y-d<=m && p[x+1][y-d]==0) ;
else if(x+1<=n && y+d>0 && y+d<=m && p[x+1][y+d]==0) ;
else if(x+2<=n && p[x+2][y]==0) ;
else
{
p[x+1][y]--;p[x+1][y-d]--;p[x+1][y+d]--;p[x+2][y]--;v[x+1][y]=1;
int f=dfs(cur+d,d);
if(f) return 1;
p[x+1][y]++;p[x+1][y-d]++;p[x+1][y+d]++;p[x+2][y]++;v[x+1][y]=0;
}
}
p[x][y]++;
}
else if(p[x-1][y+d]==1)
{
if(x==n-1)
{
if(y-d>0 && y-d<=m && p[x+1][y-d]) return 0;
}
if(p[x][y+d]>0)
{
if(x+1<=n && y-d>0 && y-d<=m && p[x+1][y-d]>1) return 0;
if(y+d+d>0 && y+d+d<=m && p[x][y+d+d]==0) return 0;
if(x+1<=n && p[x+1][y+d]==0) return 0;
p[x][y]--;p[x+1][y+d]--;p[x][y+d+d]--;p[x][y+d]--;v[x][y+d]=1;
int f=dfs(cur+d,d);
if(f) return 1;
else
{
p[x][y]++;p[x+1][y+d]++;p[x][y+d+d]++;p[x][y+d]++;v[x][y+d]=0;
return 0;
}
}
else return 0;
}
else if(p[x-1][y+d]==0)
{
if(x+1<=n && p[x+1][y]>0)
{
if(x+1<=n && y-d>0 && y-d<=m && p[x+1][y-d]==0) return 0;
if(x+1<=n && y+d>0 && y+d<=m && p[x+1][y+d]==0) return 0;
if(x+2<=n && p[x+2][y]==0) return 0;
p[x][y]--;p[x+1][y]--;p[x+1][y-d]--;p[x+1][y+d]--;p[x+2][y]--;v[x+1][y]=1;
if(x==n-1)
{
if(y-d>0 && y-d<=m && p[x+1][y-d])
{
p[x][y]++;p[x+1][y]++;p[x+1][y-d]++;p[x+1][y+d]++;p[x+2][y]++;v[x+1][y]=0;
return 0;
}
}
int f=dfs(cur+d,d);
if(f) return 1;
else
{
p[x][y]++;p[x+1][y]++;p[x+1][y-d]++;p[x+1][y+d]++;p[x+2][y]++;v[x+1][y]=0;
return 0;
}
}
else return 0;
}
else return 0;
}
else if(p[x][y]==2)
{
if((y+d<=m && y+d>0 && p[x][y+d]<1) || (x+1<=n && p[x+1][y]<1)) return 0;
if(x-1>0 && p[x-1][y+d]!=1) return 0;
if(x+1<=n && y-d>0 && y-d<=m && p[x+1][y-d]==0) return 0;
if(y+d+d>0 && y+d+d<=m && p[x][y+d+d]==0) return 0;
if(x+1<=n && p[x+1][y+d]==0) return 0;
if(x+1<=n && y+d>0 && y+d<=m && p[x+1][y+d]==0) return 0;
if(x+2<=n && p[x+2][y]==0) return 0;
p[x][y]=0;p[x+1][y+d]--;p[x][y+d+d]--;p[x][y+d]--;v[x][y+d]=1;
p[x+1][y]--;p[x+1][y-d]--;p[x+1][y+d]--;p[x+2][y]--;v[x+1][y]=1;
if(x==n-1)
{
if(y-d>0 && y-d<=m && p[x+1][y-d])
{
p[x][y]=2;p[x+1][y+d]++;p[x][y+d+d]++;p[x][y+d]++;v[x][y+d]=0;
p[x+1][y]++;p[x+1][y-d]++;p[x+1][y+d]++;p[x+2][y]++;v[x+1][y]=0;
return 0;
}
}
int f=dfs(cur+d,d);
if(f) return 1;
else
{
p[x][y]=2;p[x+1][y+d]++;p[x][y+d+d]++;p[x][y+d]++;v[x][y+d]=0;
p[x+1][y]++;p[x+1][y-d]++;p[x+1][y+d]++;p[x+2][y]++;v[x+1][y]=0;
return 0;
}
}
return 0;
}
int main()
{
int i,j,t,cnt=1;
char s;
cin>>t;
while(t--)
{
cin>>n>>m;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>s;p[i+1][j+1]=s-'0';
}
}
memset(v,0,sizeof(v));
if(p[1][1]==0) dfs(0,1);
else if(p[1][1]==3)
{
v[1][1]=1;p[1][1]=2;p[1][2]--;p[2][1]--;dfs(0,1);
}
else
{
if(dfs(0,1)==0)
{
v[1][1]=1;p[1][1]--;p[1][2]--;p[2][1]--;dfs(0,1);
}
}
cout<<"Case "<<cnt++<<":"<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(v[i+1][j+1]) cout<<"*";
else cout<<".";
}
cout<<endl;
}
}
return 0;
}