#include using namespace std; using ll = long long; using vll = vector; #define sz(x) ((ll)(x).size()) const ll MOD = 1e9+7; // template // ostream operator<<(ostream &os, const vector) int main() { ll R, K; cin >> R >> K; string layer0; cin >> layer0; layer0 = '.' + layer0 + '.'; for (int li = 0; li < K; ++li) { string layer1(sz(layer0), '.'); for (int i = 1; i < sz(layer0) - 1; ++i) { int b = ((layer0[i-1] == 'X') << 2) | ((layer0[i ] == 'X') << 1) | ((layer0[i+1] == 'X') << 0); layer1[i] = R & (1 << b) ? 'X' : '.'; } layer0 = layer1; string out = layer0.substr(1, sz(layer0) - 2); cout << out << '\n'; } }