//#include<bits/stdc++.h>
#include<iostream>
#include<string>
#include<iomanip>
#include<cmath>
#include<algorithm>
using namespace std;
//Do whatever you can ^^
int max(int arr[],int n)
{
int max = arr[0];
for (int i = 1; i < n; i++)
{
if (max < arr[i])
max = arr[i];
}
return max;
}
int min(int arr[], int n)
{
int min = arr[0];
for (int i = 1; i < n; i++)
{
if (min> arr[i])
min = arr[i];
}
return min;
}
bool valid(int i, int j, int n, int m)
{
if (i >= 0 && j >= 0 && i <= n - 1 && j <= m - 1)
return 1;
else
return 0;
}
int main()
{
//cout << fixed << setprecision(9);
//freopen("Files.in", "r", stdin);
//freopen("Files.out", "w", stdout);
std::ios_base::sync_with_stdio(NULL);
cin.tie(NULL); cout.tie(NULL);
char arr[100][100];
int r, c;
cin >> r >> c;
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
cin >> arr[i][j];
}
}
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
if (arr[i][j] == 'o')
{
arr[i][j]='x';
if (valid(i - 1, j - 1, r, c) && arr[r - 1][c - 1] == '.')
{
arr[i - 1][j - 1] = 'x';
}
if (valid(i - 1, j, r, c) && arr[i - 1][j] == '.')
{
arr[i - 1][j] = 'x';
}
if (valid(i - 1, j + 1, r, c) && arr[i - 1][j + 1] == '.')
{
arr[i - 1][j + 1] = 'x';
}
if (valid(i, j - 1, r, c) && arr[i][j - 1] == '.')
{
arr[i][j - 1] = 'x';
}
if (valid(i, j + 1, r, c) && arr[i][j + 1] == '.')
{
arr[i][j + 1] = 'x';
}
if (valid(i + 1, j - 1, r, c) && arr[i + 1][j - 1] == '.')
{
arr[i + 1][j - 1] = 'x';
}
if (valid(i + 1, j, r, c) && arr[i + 1][j] == '.')
{
arr[i + 1][j] = 'x';
}
if (valid(i + 1, j + 1, r, c) && arr[i + 1][j + 1] == '.')
{
arr[i + 1][j + 1] = 'x';
}
}
}
}
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
cout << arr[i][j] ;
}
cout << '\n';
}
// system("pause");
}
Ly8jaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8c3RyaW5nPgojaW5jbHVkZTxpb21hbmlwPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwovL0RvIHdoYXRldmVyIHlvdSBjYW4gXl4KaW50IG1heChpbnQgYXJyW10saW50IG4pCnsKCWludCBtYXggPSBhcnJbMF07Cglmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykKCXsKCQlpZiAobWF4IDwgYXJyW2ldKQoJCQltYXggPSBhcnJbaV07Cgl9CglyZXR1cm4gbWF4Owp9CmludCBtaW4oaW50IGFycltdLCBpbnQgbikKewoJaW50IG1pbiA9IGFyclswXTsKCWZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKQoJewoJCWlmIChtaW4+IGFycltpXSkKCQkJbWluID0gYXJyW2ldOwoJfQoJcmV0dXJuIG1pbjsKfQpib29sIHZhbGlkKGludCBpLCBpbnQgaiwgaW50IG4sIGludCBtKQp7CglpZiAoaSA+PSAwICYmIGogPj0gMCAmJiBpIDw9IG4gLSAxICYmIGogPD0gbSAtIDEpCgkJcmV0dXJuIDE7CgllbHNlCgkJcmV0dXJuIDA7Cn0KaW50IG1haW4oKQp7CgkvL2NvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDkpOwkKCS8vZnJlb3BlbigiRmlsZXMuaW4iLCAiciIsIHN0ZGluKTsKCS8vZnJlb3BlbigiRmlsZXMub3V0IiwgInciLCBzdGRvdXQpOwoJc3RkOjppb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKE5VTEwpOwoJY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CgljaGFyIGFyclsxMDBdWzEwMF07CglpbnQgciwgYzsKCWNpbiA+PiByID4+IGM7Cglmb3IgKGludCBpID0gMDsgaSA8IHI7IGkrKykKCXsKCQlmb3IgKGludCBqID0gMDsgaiA8IGM7IGorKykKCQl7CgkJCWNpbiA+PiBhcnJbaV1bal07CgkJfQoJfQoJZm9yIChpbnQgaSA9IDA7IGkgPCByOyBpKyspCgl7CgkJZm9yIChpbnQgaiA9IDA7IGogPCBjOyBqKyspCgkJewoJCQlpZiAoYXJyW2ldW2pdID09ICdvJykKCQkJewogICAgICAgICAgICAgICAgIGFycltpXVtqXT0neCc7CgoJCQkJaWYgKHZhbGlkKGkgLSAxLCBqIC0gMSwgciwgYykgJiYgYXJyW3IgLSAxXVtjIC0gMV0gPT0gJy4nKQoJCQkJewoKCQkJCQlhcnJbaSAtIDFdW2ogLSAxXSA9ICd4JzsKCQkJCX0KCQkJCWlmICh2YWxpZChpIC0gMSwgaiwgciwgYykgJiYgYXJyW2kgLSAxXVtqXSA9PSAnLicpCgkJCQl7CgoJCQkJCWFycltpIC0gMV1bal0gPSAneCc7CgkJCQl9CgkJCQlpZiAodmFsaWQoaSAtIDEsIGogKyAxLCByLCBjKSAmJiBhcnJbaSAtIDFdW2ogKyAxXSA9PSAnLicpCgkJCQl7CgoJCQkJCWFycltpIC0gMV1baiArIDFdID0gJ3gnOwoJCQkJfQoJCQkJaWYgKHZhbGlkKGksIGogLSAxLCByLCBjKSAmJiBhcnJbaV1baiAtIDFdID09ICcuJykKCQkJCXsKCgkJCQkJYXJyW2ldW2ogLSAxXSA9ICd4JzsKCQkJCX0KCQkJCWlmICh2YWxpZChpLCBqICsgMSwgciwgYykgJiYgYXJyW2ldW2ogKyAxXSA9PSAnLicpCgkJCQl7CgkJCQkJYXJyW2ldW2ogKyAxXSA9ICd4JzsKCQkJCX0KCQkJCWlmICh2YWxpZChpICsgMSwgaiAtIDEsIHIsIGMpICYmIGFycltpICsgMV1baiAtIDFdID09ICcuJykKCQkJCXsKCgkJCQkJYXJyW2kgKyAxXVtqIC0gMV0gPSAneCc7CgkJCQl9CgkJCQlpZiAodmFsaWQoaSArIDEsIGosIHIsIGMpICYmIGFycltpICsgMV1bal0gPT0gJy4nKQoJCQkJewoKCQkJCQlhcnJbaSArIDFdW2pdID0gJ3gnOwoJCQkJfQoJCQkJaWYgKHZhbGlkKGkgKyAxLCBqICsgMSwgciwgYykgJiYgYXJyW2kgKyAxXVtqICsgMV0gPT0gJy4nKQoJCQkJewoKCQkJCQlhcnJbaSArIDFdW2ogKyAxXSA9ICd4JzsKCQkJCX0KCQkJfQoJCX0KCX0KCWZvciAoaW50IGkgPSAwOyBpIDwgcjsgaSsrKQoJewoJCWZvciAoaW50IGogPSAwOyBqIDwgYzsgaisrKQoJCXsKCQkJY291dCA8PCBhcnJbaV1bal0gOwoJCX0KCQljb3V0IDw8ICdcbic7Cgl9Ci8vCXN5c3RlbSgicGF1c2UiKTsKfQ==