#include <iostream>
using namespace std;
const int N = 1e3 + 5;
int n, m, k;
char arr[N][N];
bool vis[N][N], leaves[N][N];
const int dx[] = {0, 0, 1, -1};
const int dy[] = {1, -1, 0, 0};
bool valid(int x, int y)
{
return (x < n && x >= 0 && y < m && y >= 0 && (arr[x][y] == '.'));
}
bool isLeaf(int x, int y)
{
for (int i = 0; i < 4; i++)
{
int nx = x + dx[i], ny = y + dy[i];
if (valid(nx, ny))
{
if (!leaves[nx][ny] && !vis[nx][ny])
{
return 0;// not leaf
}
}
}
return 1;
}
void dfs(int x, int y)
{
vis[x][y] = 1;
for (int i = 0; i < 4; i++)
{
int nx = x + dx[i], ny = y + dy[i];
if (valid(nx, ny) && !vis[nx][ny])
{
dfs(nx, ny);
}
}
if (isLeaf(x, y))
{
leaves[x][y] = 1;
if (k)
{
arr[x][y] = 'X';
k--;
}
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cin >> n >> m >> k;
bool flag = 0;
pair<int, int> index;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> arr[i][j];
if (!flag)
{
if (arr[i][j] == '.')
{
index.first = i;
index.second = j;
flag = 1;
}
}
}
}
cout << endl;
dfs(index.first, index.second);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << arr[i][j];
}
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgTiA9IDFlMyArIDU7CgppbnQgbiwgbSwgazsKCmNoYXIgYXJyW05dW05dOwpib29sIHZpc1tOXVtOXSwgbGVhdmVzW05dW05dOwoKY29uc3QgaW50IGR4W10gPSB7MCwgMCwgMSwgLTF9Owpjb25zdCBpbnQgZHlbXSA9IHsxLCAtMSwgMCwgMH07Cgpib29sIHZhbGlkKGludCB4LCBpbnQgeSkKewogICAgcmV0dXJuICh4IDwgbiAmJiB4ID49IDAgJiYgeSA8IG0gJiYgeSA+PSAwICYmIChhcnJbeF1beV0gPT0gJy4nKSk7Cn0KCmJvb2wgaXNMZWFmKGludCB4LCBpbnQgeSkKewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCiAgICB7CiAgICAgICAgaW50IG54ID0geCArIGR4W2ldLCBueSA9IHkgKyBkeVtpXTsKICAgICAgICBpZiAodmFsaWQobngsIG55KSkKICAgICAgICB7CiAgICAgICAgICAgIGlmICghbGVhdmVzW254XVtueV0gJiYgIXZpc1tueF1bbnldKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gMDsvLyBub3QgbGVhZgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnZvaWQgZGZzKGludCB4LCBpbnQgeSkKewogICAgdmlzW3hdW3ldID0gMTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKQogICAgewogICAgICAgIGludCBueCA9IHggKyBkeFtpXSwgbnkgPSB5ICsgZHlbaV07CiAgICAgICAgaWYgKHZhbGlkKG54LCBueSkgJiYgIXZpc1tueF1bbnldKQogICAgICAgIHsKICAgICAgICAgICAgZGZzKG54LCBueSk7CiAgICAgICAgfQogICAgfQogICAgaWYgKGlzTGVhZih4LCB5KSkKICAgIHsKICAgICAgICBsZWF2ZXNbeF1beV0gPSAxOwogICAgICAgIGlmIChrKQogICAgICAgIHsKICAgICAgICAgICAgYXJyW3hdW3ldID0gJ1gnOwogICAgICAgICAgICBrLS07CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGNpbiA+PiBuID4+IG0gPj4gazsKICAgIGJvb2wgZmxhZyA9IDA7CiAgICBwYWlyPGludCwgaW50PiBpbmRleDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbTsgaisrKQogICAgICAgIHsKICAgICAgICAgICAgY2luID4+IGFycltpXVtqXTsKICAgICAgICAgICAgaWYgKCFmbGFnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoYXJyW2ldW2pdID09ICcuJykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpbmRleC5maXJzdCA9IGk7CiAgICAgICAgICAgICAgICAgICAgaW5kZXguc2Vjb25kID0gajsKICAgICAgICAgICAgICAgICAgICBmbGFnID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKICAgIGRmcyhpbmRleC5maXJzdCwgaW5kZXguc2Vjb25kKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbTsgaisrKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCBhcnJbaV1bal07CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9