#include <iostream>
#include <cstring>
using namespace std;
int a[18][10];
//数组设为 18 行,并赋初值为 1 (非零即可),可以避免判断是否到达下边界
int b[4][4];
int main()
{
memset(a, 1, sizeof(a));
for(int i=0; i<15; i++){
for(int j=0; j<10; j++){
cin >> a[i][j];
}
}
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
cin >> b[i][j];
}
}
int c;
cin >> c;
//开始模拟下落过程,对应方格同时为 1 则跳出循环
int i, j, k;
for(k=0; k<15; k++){
for(i=0; i<4; i++){
for(j=0; j<4; j++){
if(b[i][j] && a[i+k][j+c-1]){
break;
}
}
if(j!=4){
break;
}
}
if(i!=4){
break;
}
}
k--; // k-- 为板块上边缘对应的行
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
if(b[i][j]){
a[i+k][j+c-1] = 1;
}
}
}
for(int i=0; i<15; i++){
for(int j=0; j<10; j++){
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}