#include using namespace std; int main() { int r, k; scanf("%d %d", &r, &k); vector generation; generation.push_back(false); string first; cin >> first; for (int i = 0; i < first.length(); i++) { if (first[i] == '.') { generation.push_back(false); } else generation.push_back(true); } generation.push_back(false); vector S;// = {1, 0, 0, 0, 0, 0, 0, 0}; //int mask = 0b10000000 for (int i = 7; i >= 0; i--) { int tmp = 1 << i; if ((r & tmp) == 0) S.push_back(0); else S.push_back(1); //printf("%d\n", r & tmp); //S.push_back(r & tmp); /*r = r >> 1; S.push_back(r & 1); printf("%d\n", S.at(i));*/ } //printf("next\n"); /*for (int i = 0; i < 8; i++) { //printf("%d\n", S.at(i)); if (S.at(i) == 0) printf("0\n"); else printf("1\n"); }*/ for (int i = 0; i < k; i++) { vector new_generation; new_generation.push_back(false); for (int j = 1; j < generation.size() - 1; j++) { if (generation[j - 1] == 1 && generation[j] == 1 && generation[j + 1] == 1) new_generation.push_back(S[0]); else if (generation[j - 1] == 1 && generation[j] == 1 && generation[j + 1] == 0) new_generation.push_back(S[1]); else if (generation[j - 1] == 1 && generation[j] == 0 && generation[j + 1] == 1) new_generation.push_back(S[2]); else if (generation[j - 1] == 1 && generation[j] == 0 && generation[j + 1] == 0) new_generation.push_back(S[3]); else if (generation[j - 1] == 0 && generation[j] == 1 && generation[j + 1] == 1) new_generation.push_back(S[4]); else if (generation[j - 1] == 0 && generation[j] == 1 && generation[j + 1] == 0) new_generation.push_back(S[5]); else if (generation[j - 1] == 0 && generation[j] == 0 && generation[j + 1] == 1) new_generation.push_back(S[6]); else if (generation[j - 1] == 0 && generation[j] == 0 && generation[j + 1] == 0) new_generation.push_back(S[7]); } new_generation.push_back(false); for (int j = 1; j < new_generation.size() - 1; j++) { if (new_generation[j]) printf("X"); else printf("."); } printf("\n"); generation = new_generation; } return 0; } /* 128 5 XXXXXXXXXXXXX */ /* 30 10 ...........X........... */