#include<iostream>
#include<string.h>
using namespace std;
//算法思路:将当前模板重复嵌入基础模板中
const int maxn=3001;
char m[maxn][maxn];//当前模板
char tmp[maxn][maxn]; //暂存
char base[6][6];//基础模板,用与嵌入
int n,len;//基础模板边长,当前模板边长
void insert(){
for(int i=0;i<len;i++){//暂存当前模板
for(int j=0;j<len;j++){
tmp[i][j]=m[i][j];
// m[i][j]=' ';//暂存后抹掉下面涂
//此法多余
}
}
for(int i=0;i<n;i++){ //在基础模板上嵌入当前模板
for(int j=0;j<n;j++){
if(base[i][j]==' '){
for(int k=0;k<len;k++){
for(int l=0;l<len;l++){
m[k+i*len][l+j*len]=' ';
}
}
}
else{
for(int k=0;k<len;k++){
for(int l=0;l<len;l++){
m[k+i*len][l+j*len]=tmp[k][l];
}
}
}
}
}
}
int main(){
while(1){
scanf("%d",&n);
len=n;
if(n==0) break;
memset(base,0,36);
memset(m,0,maxn*maxn);
memset(tmp,0,maxn*maxn);
for(int i=0;i<n;i++){
getchar();
for(int j=0;j<n;j++){
scanf("%c",&base[i][j]);
m[i][j]=base[i][j];
}
}
int q;
scanf("%d",&q);
if(q!=1){ //这里若不判q!=1,第三个例子会出错,不知道为什么,搞了半天
for(int i=1;i<q;i++){
insert();
len=len*n;
}
}
for(int i=0;i<len;i++){
for(int j=0;j<len;j++){
printf("%c",m[i][j]);
}
printf("\n");
}
}
return 0;
}