#include <cstdio>
int mat [250] [250], sablon [5] [5];
int n;
int powe (int a, int b)
{
int i, x = 1;
for (i = 1; i <= b; ++ i)
x *= a;
return x;
}
void fill_my_matrix (int xstsus, int ystsus, int xdrjos, int ydrjos)
{
int lsqb = xdrjos - xstsus + 1; //lature square big
int lsqs = lsqb / n; // lsqs - lature square small
int xstsusnew, ystsusnew, xdrjosnew, ydrjosnew;
int i, j, j2;
if (lsqb == n)
{
for (i = 1; i <= n; ++ i)
for (j = 1; j <= n; ++ j)
mat [i + xstsus - 1] [j + ystsus - 1] = sablon [i] [j];
}
else
{
for (i = 1; i <= n; ++ i)
for (j = 1; j <= n; ++ j)
{
xstsusnew = xstsus + (i - 1) * lsqs;
ystsusnew = ystsus + (j - 1) * lsqs;
xdrjosnew = xstsus + i * lsqs - 1;
ydrjosnew = ystsus + j * lsqs - 1;
if (sablon [i] [j] == 1)
{
for (; xstsusnew <= xdrjosnew; ++ xstsusnew)
{
for (j2 = ystsusnew; j2 <= ydrjosnew; ++ j2)
{
mat [xstsusnew] [j2] = 1;
}
}
}
else
fill_my_matrix (xstsusnew, ystsusnew, xdrjosnew, ydrjosnew);
}
}
}
int main ()
{
int k, i, j, xdrjos;
char x;
scanf ("%d%d", &n, &k);
for (i = 1; i <= n; ++ i)
{
scanf ("\n");
for (j = 1; j <= n; ++ j)
{
scanf ("%c", &x);
if (x == '*') sablon [i] [j] = 1;
}
}
xdrjos = powe (n, k);
fill_my_matrix (1, 1, xdrjos, xdrjos);
for (i = 1; i <= xdrjos; ++ i)
{
for (j = 1; j <= xdrjos; ++ j)
{
if (mat [i] [j] == 0) printf (".");
else printf ("*");
}
printf ("\n");
}
}
I2luY2x1ZGUgPGNzdGRpbz4KCmludCBtYXQgWzI1MF0gWzI1MF0sIHNhYmxvbiBbNV0gWzVdOwppbnQgbjsKCmludCBwb3dlIChpbnQgYSwgaW50IGIpCnsKICAgIGludCBpLCB4ID0gMTsKCWZvciAoaSA9IDE7IGkgPD0gYjsgKysgaSkKCQl4ICo9IGE7CglyZXR1cm4geDsKfQoKdm9pZCBmaWxsX215X21hdHJpeCAoaW50IHhzdHN1cywgaW50IHlzdHN1cywgaW50IHhkcmpvcywgaW50IHlkcmpvcykKewoJaW50IGxzcWIgPSB4ZHJqb3MgLSB4c3RzdXMgKyAxOyAvL2xhdHVyZSBzcXVhcmUgYmlnCglpbnQgbHNxcyA9IGxzcWIgLyBuOyAvLyBsc3FzIC0gbGF0dXJlIHNxdWFyZSBzbWFsbAoJaW50IHhzdHN1c25ldywgeXN0c3VzbmV3LCB4ZHJqb3NuZXcsIHlkcmpvc25ldzsKCWludCBpLCBqLCBqMjsKCWlmIChsc3FiID09IG4pCgl7CgkJZm9yIChpID0gMTsgaSA8PSBuOyArKyBpKQoJCQlmb3IgKGogPSAxOyBqIDw9IG47ICsrIGopCgkJCQltYXQgW2kgKyB4c3RzdXMgLSAxXSBbaiArIHlzdHN1cyAtIDFdID0gc2FibG9uIFtpXSBbal07Cgl9CgllbHNlCgl7CgkJZm9yIChpID0gMTsgaSA8PSBuOyArKyBpKQoJCQlmb3IgKGogPSAxOyBqIDw9IG47ICsrIGopCgkJCXsKCQkJCXhzdHN1c25ldyA9IHhzdHN1cyArIChpIC0gMSkgKiBsc3FzOwoJCQkJeXN0c3VzbmV3ID0geXN0c3VzICsgKGogLSAxKSAqIGxzcXM7CgkJCQl4ZHJqb3NuZXcgPSB4c3RzdXMgKyBpICogbHNxcyAtIDE7CgkJCQl5ZHJqb3NuZXcgPSB5c3RzdXMgKyBqICogbHNxcyAtIDE7CgkJCQlpZiAoc2FibG9uIFtpXSBbal0gPT0gMSkKCQkJCXsKCQkJCQlmb3IgKDsgeHN0c3VzbmV3IDw9IHhkcmpvc25ldzsgKysgeHN0c3VzbmV3KQoJCQkJCXsKCQkJCQkJZm9yIChqMiA9IHlzdHN1c25ldzsgajIgPD0geWRyam9zbmV3OyArKyBqMikKCQkJCQkJewoJCQkJCQkJbWF0IFt4c3RzdXNuZXddIFtqMl0gPSAxOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJZWxzZQoJCQkJCWZpbGxfbXlfbWF0cml4ICh4c3RzdXNuZXcsIHlzdHN1c25ldywgeGRyam9zbmV3LCB5ZHJqb3NuZXcpOwoJCQl9Cgl9Cn0KCmludCBtYWluICgpCnsKCWludCBrLCBpLCBqLCB4ZHJqb3M7CgljaGFyIHg7CgkKCXNjYW5mICgiJWQlZCIsICZuLCAmayk7Cglmb3IgKGkgPSAxOyBpIDw9IG47ICsrIGkpCgl7CgkJc2NhbmYgKCJcbiIpOwoJCWZvciAoaiA9IDE7IGogPD0gbjsgKysgaikKCQl7CgkJCXNjYW5mICgiJWMiLCAmeCk7CgkJCWlmICh4ID09ICcqJykgc2FibG9uIFtpXSBbal0gPSAxOwoJCX0KCX0KCQoJeGRyam9zID0gcG93ZSAobiwgayk7CglmaWxsX215X21hdHJpeCAoMSwgMSwgeGRyam9zLCB4ZHJqb3MpOwoKCWZvciAoaSA9IDE7IGkgPD0geGRyam9zOyArKyBpKQoJewoJCWZvciAoaiA9IDE7IGogPD0geGRyam9zOyArKyBqKQoJCXsKCQkJaWYgKG1hdCBbaV0gW2pdID09IDApIHByaW50ZiAoIi4iKTsKCQkJZWxzZSBwcmludGYgKCIqIik7CgkJfQoJCXByaW50ZiAoIlxuIik7Cgl9CgkKfQo=