#include using namespace std; typedef long long ll; typedef vector vll; #define fr(i,n) for (int i = 0; i &gen, ll index){ if (index < 0) return false; if (index >= gen.size()) return false; return gen[index]; } bool makeNew(ll a, ll b, ll c, ll mask){ ll bitIndex = 4*a+2*b+c; ll bigNum = 1<> r >> k >> s; ssize = s.size(); vector lastGen; fr(i, ssize) lastGen.push_back(s[i]=='.'?false: true); fr(i, k){ vector newGen(ssize); for (ll j = 0; j < ssize; ++j) { bool a = getFrom(lastGen, j-1); bool b = getFrom(lastGen, j); bool c = getFrom(lastGen, j+1); newGen[j] = makeNew(a, b, c, r); cout << (newGen[j]?"X":"."); } cout << endl; lastGen = newGen; } } int main(){ solve(); return 0; }