#include<bits/stdc++.h>
using namespace std;
char a[730][730];
string mu[10];
int n;
void dfs(int n,int x,int y){
if(n==1){//赋值方式改了一下,由原来的赋值单个字符到现在赋值一组
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a[i+x][j+y]=mu[i][j];
return;
return ;
}
int l=pow(3,n-2);
dfs(n-1,x,y);
dfs(n-1,x+2*l,y);
dfs(n-1,x+2*l,y+2*l);
dfs(n-1,x+l,y+l);
dfs(n-1,x,y+2*l);
}
int main(){
while(1){
int s;
cin>>s;
if(s==-1) break;
getchar(); //吃换行
for(int i=0;i<s;i++){//从0开始是为了后面循环的统一,因为字符串都是从0开始的
getline(cin,mu[i]);
}
int t;
cin>>t;
dfs(s,0,0);//注意是0,0不是1,1
for(int i=0;i<pow(s,t);i++){
for(int j=0;j<pow(s,t);j++){
if(a[i][j]==0) cout<<' ';
else cout<<a[i][j];
}
cout<<endl;
}
}
return 0;
}