import java.util.Scanner;
import java.lang.Math;
public class Main {
public static void main(String[] args) {
// write your code here
Scanner scanner = new Scanner(System.in);
//输入Qij
int[][] Qij = new int[8][8];
for (int i=0;i<8;i++){
for(int j=0;j<8;j++){
Qij[i][j]=scanner.nextInt();
}
}
//输入数据个数
int n = scanner.nextInt();
//输入要进行的任务
int T = scanner.nextInt();
//输入计数
int k=0;
//输入矩阵Mij
int[][] Mij = new int[8][8];
for(int i=0;i<8;i++){ //填充矩阵的左上部分
if(i%2==0){ //填充方向右上
for(int j=0;j<=i;j++){
if(k<n){
Mij[i-j][j]= scanner.nextInt();
k++;
}else{
Mij[i-j][j]= 0;
}
}
}
else { //填充方向左下
for(int j=0;j<=i;j++){
if(k<n){
Mij[j][i-j]= scanner.nextInt();
k++;
}else{
Mij[j][i-j]= 0;
}
}
}
}
for(int i=8;i<15;i++){ //填充矩阵的部分
if(i%2==0){ //填充方向右上
for(int j=i-7;j<=7;j++){
if(k<n){
Mij[i-j][j]= scanner.nextInt();
k++;
}else{
Mij[i-j][j]= 0;
}
}
}
else { //填充方向左下
for(int j=i-7;j<=7;j++){
if(k<n){
Mij[j][i-j]= scanner.nextInt();
k++;
}else{
Mij[j][i-j]= 0;
}
}
}
}
int[][] MQij = new int[8][8];
//M*Q
for (int i=0;i<8;i++){
for(int j=0;j<8;j++){
MQij[i][j]=Mij[i][j]*Qij[i][j];
}
}
//逆变换
double[][] finalM = new double[8][8];
int[][] finalM2 = new int[8][8];
for (int i=0;i<8;i++){
for(int j=0;j<8;j++){
finalM[i][j]=0;
for(int u=0;u<8;u++){
for (int v=0;v<8;v++){
if(u==0&&v==0){
finalM[i][j] += 0.5 * MQij[u][v] * Math.cos(0) * Math.cos(0);
}else if(u==0){
finalM[i][j] += Math.pow(0.5,0.5) * MQij[u][v] * Math.cos(0) * Math.cos(Math.PI*(j+0.5)*v/8);
}else if(v==0){
finalM[i][j] += Math.pow(0.5,0.5) * MQij[u][v] * Math.cos(Math.PI*(i+0.5)*u/8) * Math.cos(0);
}else{
finalM[i][j] += MQij[u][v] * Math.cos(Math.PI*(i+0.5)*u/8) * Math.cos(Math.PI*(j+0.5)*v/8);
}
}
}
finalM[i][j] /= 4;
finalM2[i][j]=(int)(finalM[i][j]+128+0.5); //加0.5可以达到四舍五入的效果
if (finalM2[i][j]>255){
finalM2[i][j]=255;
}
if (finalM2[i][j]<0){
finalM2[i][j]=0;
}
}
}
//输出
if (T==0){
for (int i=0;i<8;i++) {
for (int j = 0; j < 8; j++) {
System.out.print(Mij[i][j]+" ");
}
System.out.println();
}
}else if(T==1){
for (int i=0;i<8;i++) {
for (int j = 0; j < 8; j++) {
System.out.print(MQij[i][j]+" ");
}
System.out.println();
}
}else{
for (int i=0;i<8;i++) {
for (int j = 0; j < 8; j++) {
System.out.print(finalM2[i][j]+" ");
}
System.out.println();
}
}
}
}