#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int N = 10;
const long double pi = acos(-1);
int Q[N][N], M[N][N], n, t, resM[N][N];
long double newM[N][N];
int posx[20] = { 1,1,3,1,5,1,7,1,8,3,8,5,8,7,8 };
int posy[20] = { 1,2,1,4,1,6,1,8,2,8,4,8,6,8,8 };
void readQ(void)
{
for (int i = 1; i <= 8; i++)
for (int j = 1; j <= 8; j++)
scanf("%d", &Q[i][j]);
}
void readM(void)
{
scanf("%d%d", &n, &t);
int a[100], k = 1;
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (int i = 0; i < 15; i++)
{
int sx = posx[i], sy = posy[i];
if (i % 2)
{
while (k <= n && sy >= 1 && sx <= 8)
{
M[sx][sy] = a[k++];
sx += 1, sy -= 1;
}
if (k > n)
break;
}
else
{
while (k <= n && sx >= 1 && sy <= 8)
{
M[sx][sy] = a[k++];
sx -= 1, sy += 1;
}
if (k > n)
break;
}
}
}
void mult(void)
{
for (int i = 1; i <= 8; i++)
for (int j = 1; j <= 8; j++)
M[i][j] *= Q[i][j];
}
long double arefa(int u)
{
if (u == 0)
return sqrt(0.5);
return 1;
}
long double cosin(int i, int u)
{
if (u == 0)
return 1;
return cos(pi * 0.125 * (i + 0.5) * u);
}
void coschange(void)
{
long double sum = 0;
for(int i = 1;i <= 8;i++)
for (int j = 1; j <= 8; j++)
{
sum = 0;
for (int a = 1; a <= 8; a++)
for (int b = 1; b <= 8; b++)
sum = sum + 0.25 * arefa(a - 1) * arefa(b - 1)
* M[a][b] * cosin(i - 1, a - 1) * cosin(j - 1, b - 1);
newM[i][j] = sum;
}
}
void she(void)
{
for(int i = 1;i <= 8;i++)
for (int j = 1; j <= 8; j++)
{
newM[i][j] += 128;
if (newM[i][j] < 0)
resM[i][j] = 0;
else if (newM[i][j] > 255)
resM[i][j] = 255;
else
{
if (newM[i][j] - int(newM[i][j]) >= 0.5)
resM[i][j] = int(newM[i][j]) + 1;
else
resM[i][j] = int(newM[i][j]);
}
}
}
int main(void)
{
readQ();
readM();
if (t == 0)
{
for (int i = 1; i <= 8; i++)
{
for (int j = 1; j <= 8; j++)
printf("%d ", M[i][j]);
printf("\n");
}
return 0;
}
mult();
if (t == 1)
{
for (int i = 1; i <= 8; i++)
{
for (int j = 1; j <= 8; j++)
printf("%d ", M[i][j]);
printf("\n");
}
return 0;
}
coschange();
she();
for (int i = 1; i <= 8; i++)
{
for (int j = 1; j <= 8; j++)
printf("%d ", resM[i][j]);
printf("\n");
}
return 0;
}