#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;
}