#include<bits/stdc++.h>
char a[502][502];
int r=0,ans=0;
int n,m,k;
int check(int i,int j){
if(i<n&&i>=0&&j<m&&j>=0)return 1;
return 0;
}
int dir[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
void dfs(int x,int y){
for(int i=0;i<4;i++){
int newx=dir[i][0]+x;
int newy=dir[i][1]+y;
if(check(newx,newy)&&a[newx][newy]=='.'&&ans<r-k){
ans++;
a[newx][newy]='@';
dfs(newx,newy);
}
}
}
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<n;i++){
scanf("%s",&a[i]);
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]=='.')r++;
}
}
int sign=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]=='.'){
dfs(i,j);
sign=1;
break;
}
}
if(sign==1)break;
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]=='.'){
a[i][j]='X';
}
else if(a[i][j]=='@'){
a[i][j]='.';
}
}
}
for(int i=0;i<n;i++){
printf("%s\n",a[i]);
}
return 0;
}